Log4j 初始化时出现警告?

2022-09-03 04:01:51

我正在尝试学习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.

你知道我错在哪里吗?

谢谢大家


答案 1

您的类路径中缺少 或。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

答案 2

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

我的log4j.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- ============================== -->
   <!-- Append messages to the console -->
   <!-- ============================== -->

   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="Target" value="System.out"/>
      <param name="Threshold" value="DEBUG"/>

      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] Message\n -->
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>

<!-- ======================= -->
   <!-- Setup the Root category -->
   <!-- ======================= -->

   <root>
      <!-- 
         Set the root logger priority via a system property. Note this is parsed by log4j         
       -->
      <appender-ref ref="CONSOLE"/>
   </root>

</log4j:configuration>

推荐