6

我正在尝试 log4j2 为我正在开发的系统创建日志文件,我已按照他们网站上的说明进行操作,运行它时没有发生错误,但日志没有保存在我设置的位置(例如。“ D:\logs\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>

我试过了 :

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

[编辑:]

我的类路径中也有这些库

  • log4j-api-2.0-beta3.jar
  • log4j-core-2.0-beta3.jar

Am I missing something on RollingFile configuration or a library (maybe)?

Thanks in advance.

4

1 回答 1

4

Your logger name is incorrect.

As explained in the configuration instructions you linked to, the logger should be named according to the package/classes you wish to capture logging for.

In their example the logger named com.foo.Bar would log everything from the Bar class in package com.foo with TRACE level.

于 2012-11-25T13:00:07.930 回答