无法使用log4j 2.0生成datanucleus的日志

时间:2015-08-10 08:44:07

标签: log4j2 datanucleus

我正在使用Log4j 2,而我正在使用4.0.4版本的datanucleus。 当我运行我的应用程序时,它无法生成datanucleus日志。 使用Log4j-1.x可以很好地处理Datanucleus日志,但是当我将Log4j-1.x切换到2.x时,我无法生成datanucleus日志。

Log4j2 XML是:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="FATAL" name="TestApp" packages="" monitorInterval="60">
  <Appenders>
    <RollingFile name="datanucleus" 
      fileName="/Test/logs/datanucleus-${sys:logging.log4j}.log"
      filePattern="/Test/logs/logs/$${date:yyyy-MM-dd}/datanucleus-${sys:logging.log4j}-%d{yyyy-MM-dd-HH}.log.gz"
      ignoreExceptions="false">
      <PatternLayout>
        <Pattern>%d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %C %M:%L - %m%n</Pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy interval="24" modulate="true" />
    </RollingFile>

    <Console name="STDOUT" target="SYSTEM_OUT" ignoreExceptions="false">
      <PatternLayout pattern="%m%n" />
    </Console>
    <Failover name="Failover" primary="RollingFile">
      <Failovers>
        <AppenderRef ref="STDOUT" />
      </Failovers>
    </Failover>
  </Appenders>
  <Loggers>
    <Logger name="DataNucleus.Datastore" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Logger name="DataNucleus.Cache" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Logger name="DataNucleus.Persistence" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Logger name="DataNucleus.Connection" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Logger name="DataNucleus.Transaction" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Logger name="DataNucleus.Lifecycle" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Logger name="DataNucleus.MetaData" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Logger name="org.datanucleus" level="debug" additivity="false">
      <AppenderRef ref="datanucleus" />
    </Logger>
    <Root level="debug">
      <AppenderRef ref="STDOUT" />
    </Root>
  </Loggers>
</Configuration>

请帮助我......

使用Log4j 1.2它对我有用,但是当我尝试使用Log4j 2.3时,除了DataNucleus日志之外,还会生成其他日志。以下是我的依赖项:

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.3</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.3</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-slf4j-impl</artifactId>
  <version>2.3</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-web</artifactId>
  <version>2.3</version>
</dependency>

1 个答案:

答案 0 :(得分:0)

首先要尝试的是打开Log4j 2内部调试。您可以将配置文件开头的<Configuration status="FATAL" ...替换为<Configuration status="TRACE"...来执行此操作。这将向控制台显示Log4j 2内部调试消息。如果您在此处看到任何错误,可能会帮助您解决问题。

常见问题是依赖性。您的应用程序是否使用Log4j-1.2 API?如果是这样,您需要将log4j-1.2-api-2.3.jar桥接添加到依赖项。该桥将您的应用程序的所有调用路由到log4j-1.2到Log4j 2实现。

最后,请确保从类路径中删除log4j-1.2.x.jar