我正在尝试为Maven项目启用打印调试信息。我说的log4j作为依赖于pom.xml
并添加log4j.properties
以及log4j2.properties
与rootloger=DEBUG, sdout
到src/main/resources
文件夹。然后,在所需的班级中,我启动所需班级“org.pakage1.ClassA”中的记录程序并添加logger.debug()
行,但是我的领事没有显示任何内容。当我检查logger.isDebugEnabled()
返回false
如何使用.properties文件和maven在Log4j中启用调试?
的pom.xml
<dependencies> ..... <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
log4j.properties,同样log4j2
log4j.debug=true log4j.rootLogger=DEBUG, stdout log4j.appender.Stdout.threshold=debug log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%-5p %d [%t] %c{1} - %m%n
并作为额外的步骤,我尝试添加
log4j.logger.extendedsldnf.ExtendedSLDNFEvaluator=DEBUG
,但它也没有工作。
package package1; ...... class ClassA{ private Logger logger = LoggerFactory.getLogger(getClass()); ...... public static void main(String []args){ logger.debug("message"); } }
知道我是在收到警告
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
而且该项目其他子模块也有启用日志记录类似的,当在log4j.properties
文件中所述调试消息行之有效
有什么遗漏吗?如何检查是否有冲突?
谢谢你对我的答案似乎是合理的,但有一点..为什么可能'logger.isDbugEnabled()'返回false,而配置文件是显式说明它是真的? –
不用客气。因为它是在运行时使用的Logback配置,而不是Log4J配置。 – davidxxx
我刚刚已经想通了,我发现,如果项目或其依赖项中有多个log4j.properties文件,只有其中一个被加载 –