首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Log4j 2.0 -日志文件中没有出现日志-使用log4j2.xml尝试同一个类中的多个记录器

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

Stack Overflow用户
提问于 2013-09-09 21:56:21
回答 1查看 1.3K关注 0票数 1

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

  • 请让我知道为什么日志不去我已经配置的日志文件。请帮我做这个,或者给我一些指导或提示。

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

代码语言:javascript
复制
private static final transient Logger LOG = Logger.getLogger(DCLASS.class);

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

我在“类路径”中包含了以下jars:

  1. log4j-api-2.0-beta8.jar
  2. log4j-core-2.0-beta8.jar
  3. disruptor-3.0.0.beta1.jar

我的log4j2.xml如下:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

发布于 2013-09-09 22:54:16

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

在密码里,我有

代码语言:javascript
复制
private static final transient Logger ASYNC_LOG = Logger.getLogger("ASYNC");

代码应该是

代码语言:javascript
复制
private static final transient Logger ASYNC_LOG = Logmanager.getLogger("ASYNC");

当它是“记录器”时,编译器将查看“Log4j API”,而当它是“LogManager”时,则会查看“Log4j2 API”。由于我已经配置了所有要使用Log4j2的内容,通过将记录器更改为LogManager,日志开始按预期的方式进入日志文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18707681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档