Log4j 2.0 - 日志文件中没有日志 - 使用log4j2.xml在同一个类中尝试多个记录器

时间:2013-09-09 21:56:21

标签: java logging asynchronous log4j log4j2

下面是我创建的log4j2.xml文件。我为异步日志记录配置了async_file.log,为常规和同步日志记录配置了regular_file.log。问题是日志文件已创建,但文件大小为零且没有日志。所有日志都来自server.log文件(JBOSS),而不是我为之配置的2个文件(async_file.log和regular_file.log)。

  • 请告诉我为什么日志不会转到我配置的日志文件。请帮帮我,或给我一些指示或提示。

我通过名称DCLASS在同一个类文件中调用两个不同的记录器,如下所示:

private static final transient Logger LOG = Logger.getLogger(DCLASS.class);

private static final transient Logger ASYNC_LOG = Logger.getLogger("ASYNC");

我在类路径中包含以下jar:
1. log4j-api-2.0-beta8.jar
2. log4j-core-2.0-beta8.jar
3. disruptor-3.0.0.beta1.jar

我的log4j2.xml如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration status="INFO">
  <appenders>
    <!-- Async Loggers will auto-flush in batches, so switch off immediateFlush. -->

    <FastFile name="AsyncFastFile" fileName="../standalone/log/async_file.log" 
              immediateFlush="false" append="true">
      <PatternLayout>
        <pattern>%d %p %class{1.} [%t] %location %m %ex%n</pattern>
      </PatternLayout>
    </FastFile>

    <FastFile name="FastFile" fileName="../standalone/log/regular_file.log" 
              immediateFlush="true" append="true">
      <PatternLayout>
        <pattern>%d %p %class{1.} [%t] %location %m %ex%n</pattern>
      </PatternLayout>
    </FastFile>
  </appenders>

  <loggers>
    <!-- pattern layout actually uses location, so we need to include it -->
    <asyncLogger name="ASYNC" level="trace" includeLocation="true">
      <appender-ref ref="AsyncFastFile"/>
    </asyncLogger>

    <root level="info" includeLocation="true">
      <appender-ref ref="FastFile"/>
    </root>

  </loggers>
</configuration>

1 个答案:

答案 0 :(得分:1)

日志没有进入日志文件的原因是因为我使用的是“Logger”而不是“LogManager”。

在代码中,我有

private static final transient Logger ASYNC_LOG = Logger.getLogger("ASYNC");

代码应该是

private static final transient Logger ASYNC_LOG = Logmanager.getLogger("ASYNC");

当它是'logger'时,编译器正在查看'Log4j API',当它是'LogManager'时,它正在查看'Log4j2 API'。由于我已经将所有内容配置为使用Log4j2,因此通过将logger更改为LogManager,日志开始按预期进入日志文件。