Java 仅指定要具有调试输出的某些包

Java 仅指定要具有调试输出的某些包,java,log4j,Java,Log4j,我想记录我的web应用程序的一些行为,它还实现了hibernate、spring等。当我尝试从apache实现log4j logger时,遇到了一些问题 当我打开logger时,它也在调试hibernate和spring,这是我不想要的。我试图将属性文件配置为指定项目的包,但它不起作用 这是我的属性文件代码: log4j.rootCategory=ERROR, O log4j.category.com.my.package= DEBUG, FILE, O log4j.appender.FILE=

我想记录我的web应用程序的一些行为,它还实现了hibernate、spring等。当我尝试从apache实现log4j logger时,遇到了一些问题

当我打开logger时,它也在调试hibernate和spring,这是我不想要的。我试图将属性文件配置为指定项目的包,但它不起作用

这是我的属性文件代码:

log4j.rootCategory=ERROR, O
log4j.category.com.my.package= DEBUG, FILE, O
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log/logger.log
log4j.appender.O=org.apache.log4j.ConsoleAppender
.... and some layout

它在我切换
rootCategory=DEBUG
时工作,但正如我所说,它也在调试hibernate和spring。

是的,您必须指定每个包的日志级别:

log4j.logger.org.hibernate=info
log4j.logger.org.springframework=info
log4j.logger.com.yourapplication=debug

请注意,您应该从类别(过时)切换到记录器。所以
log4j.rootLogger=…

您需要知道实际在写东西的记录器的名称。。。最简单的方法是将根类别设置为错误:

log4j.rootCategory=ERROR, 0
然后相应地设置日志的级别:

log4j.com.your.package=DEBUG...
rootCategory
设置为
DEBUG
会将所有内容都设置为
DEBUG
,除非您专门配置了记录器


B.T.W,这不是hibernate问题,这与您如何配置记录器有关。

这可能有助于hibernate:如何创建
记录器
对象?@kmb385您的链接对我帮助很大。thanks@kevin启动属性并调用静态方法getLogger(“some_name”);但是我已经解决了:]但是不管怎样,谢谢你当你说
some\u name
,那是像
com.my.package.some\u name
还是更像
calculator\u log
?Log4J
Logger
s根据其名称中的句点形成层次结构,因此,通常最好使用与正在进行日志记录的类相同的名称来命名日志记录程序。为什么不为根日志记录程序指定
ERROR
,然后为需要调试的特定包指定
DEBUG
?@Kevin我不知道为什么,但我就是不这样做。这应该是正确的答案,但是我认为,因为提问者没有命名像
com.your.package.foo.bar这样的记录器对象,所以调试配置行没有任何效果。