首页 > 解决方案 > log4j2 - StatusLogger 找不到 Log4j 2 配置文件。使用默认配置

问题描述

这是我的配置文件:

<Configuration status="INFO">
  <Properties>
    <Property name="log-path">./log</Property>
  </Properties>
  <Appenders>
    <RollingFile name="RollingFile" fileName="${log-path}/mylog.log" filePattern="${log-path}/mylog-%d{yyyy-MM-dd}-%i.log">
      <PatternLayout>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]\t%m%n</pattern>
      </PatternLayout>
      <Policies>
        <SizeBasedTriggeringPolicy size="10 MB" />
      </Policies>
      <DefaultRolloverStrategy max="32" />
    </RollingFile>


    <Console name="STDOUT" target="SYSTEM_OUT" ignoreExceptions="false">
      <PatternLayout>
        <pattern>%n%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]\t%m</pattern>
      </PatternLayout>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="mylog" level="debug" additivity="false">
      <appender-ref ref="RollingFile" level="DEBUG" />
      <appender-ref ref="STDOUT" level="DEBUG" />
    </Logger>

  </Loggers>
</Configuration>

但我收到以下错误:

错误 StatusLogger 找不到 Log4j 2 配置文件。使用默认配置(仅将错误记录到控制台),或用户以编程方式提供的配置。设置系统属性“log4j2.debug”以显示 Log4j 2 内部初始化日志记录。有关如何配置 Log4j 2 的说明,请参阅https://logging.apache.org/log4j/2.x/manual/configuration.html

我该如何解决?

这是我的 Maven 依赖项:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.11.0</version>
</dependency>

日志配置文件读得很清楚,因为它使用我 /log 目录中定义的模式正确写入。

这就是我在代码中实例化它的方式:

LoggerContext lcontext = (org.apache.logging.log4j.core.LoggerContext)  LogManager.getContext(false)
Logger logger = LogManager.getLogger("mylog");

标签: javalogginglog4jlog4j2

解决方案


我通过将log4j2.xml放在src/main/resources文件夹中,在我的 Spring Boot 应用程序中解决了这个问题。它在编译期间仍然给我“StatusError No Log4j 2 configuration file found”,但是当它运行时,它实际上遵循我的配置。希望这可以帮助。


推荐阅读