初始化时Log4j警告?

我正在尝试了解log4j所以我只是尝试做一些非常简单的事情;

Logger logger = Logger.getLogger("ClientApplicationLog"); logger.info("Logger Test"); 

但是在我得到这个之后;

 log4j:WARN No appenders could be found for logger (ClientApplicationLog). log4j:WARN Please initialize the log4j system properly. 

你知道我哪里错了吗?

谢谢你们

您在类路径中缺少log4j.propertieslog4j.xml

你可以通过使用绕过这个

 BasicConfigurator.configure(); 

但请注意,这只会记录到System.out,不建议使用。 您应该使用上面的一个文件并写入日志文件。

一个非常简单的log4j.properties示例

 #Log to Console as STDOUT log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c %3x - %m%n #Log to file FILE log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=logfile.log log4j.appender.file.DatePattern='.'yyyy-MM-dd log4j.appender.file.append=true log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c %3x - %m%n #Root Logger log4j.rootLogger=INFO, stdout, file 

你需要在类路径的某个地方有一个log4j.xml,并告知它在哪里记录,如何记录等。或者你可以在代码中以编程方式设置所有这些,但是在你的实现中具有灵活性要好得多。

我的log4j.xml看起来像:

                        

这只是警告。

定影

当找不到默认配置文件log4j.propertieslog4j.xml且应用程序不执行显式配置时,会发生这种情况。

要解决这个问题,只需将log4j.propertieslog4j.xml创建/复制到类路径上的某个位置(通常与jar文件相同)。

(可选)设置java选项: -Dlog4j.configuration=file:///path/to/log4j.properties

log4j使用Thread.getContextClassLoader().getResource()来定位默认配置文件,而不直接检查文件系统。 了解放置log4j.propertieslog4j.xml的适当位置需要了解正在使用的类加载器的搜索策略。 log4j不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。

调试

对于调试,您可以尝试使用-Dlog4j.debug=true参数。

配置log4j.properties

log4j.properties示例配置:

 # Set root logger level to DEBUG and its only appender to A1. log4j.rootLogger=DEBUG, A1 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender # A1 uses PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n # Print only messages of level WARN or above in the package com.foo. log4j.logger.com.foo=WARN 

这是另一个使用多个appender的配置文件:

 log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log log4j.appender.R.MaxFileSize=100KB # Keep one backup file log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

Apache Solr

如果使用Solr,请将/example/resources/log4j.properties复制到类路径上的某个位置。

来自Solr的log4j.properties示例配置如下:

 # Logging level solr.log=logs/ log4j.rootLogger=INFO, file, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n #- size rotation with log cleanup. log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.MaxFileSize=4MB log4j.appender.file.MaxBackupIndex=9 #- File to log to and log format log4j.appender.file.File=${solr.log}/solr.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n log4j.logger.org.apache.zookeeper=WARN log4j.logger.org.apache.hadoop=WARN # set to INFO to enable infostream log messages log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF 

也可以看看:

  • log4j的简短介绍:默认初始化过程
  • 为什么log4j不能在J2EE或WAR应用程序中找到我的属性?

您需要为记录器定义一个appender(例如日志文件),例如在类路径的log4j.properties文件中。

本教程应包含您需要知道的所有内容。

好像你的log4j.properties不在类路径中。 确保它是在您的配置文件中,您有一个定义了名称“ClientApplicationLog”的记录器。