Log4j2保存文件(使用RollingFile appender)

min*_*e26 6 java rollingfileappender log4j2

我正在尝试使用log4j2来创建我正在开发的系统的日志文件,我已经按照他们网站上的说明进行操作,并且在运行时没有发生错误,但是日志没有保存在我设置的地方(例如" d:\日志\ app.log").

这是我的log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <RollingFile name="MyRollingFile" fileName="D:/logs/app.log"
                 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <pattern>%d %p %C{1.} [%t] %m%n</pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="20"/>
    </RollingFile>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </appenders>
  <loggers>
    <logger name="Log_RollingFile" level="TRACE" additivity="false">
      <appender-ref ref="MyRollingFile"/>
    </logger>
    <root level="ERROR">
      <appender-ref ref="Console"/>
    </root>
  </loggers>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我试过了 :

  • 删除app.log以查看我的配置(D:\ logs\app.log)是否有效.当我运行应用程序时,它会创建app.log,所以我认为这意味着它会看到配置,唯一的问题就是它没有保存我在java应用程序中执行的log.info
  • 将根级别更改为"TRACE",然后打印log.info.

[编辑:]

我在类路径上也有这些库

  • 的log4j-API-2.0-beta3.jar
  • log4j的核-2.0-beta3.jar

我在RollingFile配置或库(可能)上遗漏了什么?

提前致谢.

dar*_*man 4

您的记录器名称不正确。

正如您链接到的配置说明中所解释的,记录器应根据您希望捕获日志记录的包/类来命名。

在他们的示例中,名为的记录器com.foo.Bar将记录Bar级别包中com.foo类的所有内容TRACE