【问题标题】:Logback FileAppender - logfile is empty?Logback FileAppender - 日志文件为空?
【发布时间】:2024-01-19 23:24:01
【问题描述】:

在一个项目中,我在类路径中有以下内容:

Bundle-ClassPath: .,
 lib/logback-classic.jar,
 lib/logback-core.jar,
 lib/slf4j-api.jar

以及 build.properties 中的以下内容:

bin.includes = META-INF/,\
               .,\
               plugin.xml,\
               lib/logback-classic.jar,\
               lib/logback-core.jar,\
               lib/slf4j-api.jar,\
               logback.xml

在根目录中,我还有一个 logback.xml 文件,其中包含:

<!--   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> -->
<!--     <layout class="ch.qos.logback.classic.PatternLayout"> -->
<!--       <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n -->
<!--       </Pattern> -->
<!--     </layout> -->
<!--   </appender> -->
  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <File>logs\\logfile.log</File>
    <Append>true</Append>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
      </Pattern>
    </layout>
  </appender>
</configuration>

在启动时执行的类中,我有:

  private static final Logger logger = LoggerFactory.getLogger(Application.class.getName());
  public Object start(IApplicationContext context) {
    logger.debug("debug string");
    logger.warn("warn string");
    logger.error("error string");

当我构建和运行我的应用程序时,会在我的应用程序的根目录中创建一个文件 logs\logfile.log,但它是空的。如果我使用 ConsoleAppender 并启用控制台,它工作正常。

为什么在使用 FileAppender 时 logback 不写入日志文件?

【问题讨论】:

    标签: logging logback


    【解决方案1】:

    您是否尝试过将文件 appender-ref 添加到 logback.xml 中的根目录,如下所示:

    <root level="debug">
       <appender-ref ref="STDOUT" />
       <appender-ref ref="FILE" />
    </root>
    

    【讨论】:

    • 精湛的回答谢谢 Girish!