log4j2-StatusLogger找不到Log4j 2配置文件。使用默认配置

时间:2018-08-14 08:07:00

标签: java logging log4j log4j2

这是我的配置文件:

<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");

5 个答案:

答案 0 :(得分:1)

如果您使用的是Web Servlet,则还需要以下依赖项:

<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>

https://logging.apache.org/log4j/2.x/maven-artifacts.html

答案 1 :(得分:0)

您应该能够使用System.setProperty("log4j.configurationFile", log4j2ConfigFile);来告诉系统log4j2配置文件在哪里

答案 2 :(得分:0)

就我而言,我将文件保存在src / main / resources中。但是Log4J仍然找不到它,因为Maven插件创建的JAR不包含log4j2.xml文件。

要摆脱这个问题,我将文件保留在文件夹的根目录下(紧挨pom.xml)。现在,当我使用Maven插件创建JAR文件时,Log4j可以访问它。而且有效! :)

希望这会对您有所帮助。

答案 3 :(得分:0)

来自 log4j用户指南6.1.1配置

  
      
  1. 如果没有位置。...WEB-INF目录中的“ log4j2” ...
  2.   

但这是行不通的(至少就我而言)。下面的作品:

  

WEB-INF / classes / log4j2.xml

希望这会有所帮助。

应用服务器:wildfly 14

答案 4 :(得分:0)

我已通过将 log4j2.xml 放在. . .文件夹中,已在Spring Boot应用程序中修复了此问题。它仍然会在编译期间为我提供“ StatusError No Log4j 2配置文件未找到”,但是在运行时,它实际上会遵循我的配置。希望这会有所帮助。