Log4j2没有看到配置xml

时间:2015-09-04 11:41:51

标签: java maven logging log4j log4j2

可能我搜索了所有的互联网,但我必须错过一些东西。

我根据文档配置Log4j2和Commons-logging。我添加log4j2.xml,但其配置对应用程序输出没有影响。我看起来像Log4j没有读取此文件。这是我的配置:

的pom.xml

<properties>
    <log4j2.version>2.3</log4j2.version>
</properties>

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j2.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j2.version}</version>
    </dependency>
</dependencies>

\ SRC \主\资源\ log4j2.xml

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

    <Properties>
        <Property name="filename">fileName</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="Pattern Pattern %d{DEFAULT} %-5level %t : %logger{1} - %m%n"/>
        </Console>
        <RollingFile name="RollingFile"
                     fileName="${filename}.log"
                     filePattern="${filename}-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="%d{DEFAULT} %-5level %t : %logger{1} - %m%n"/>
            <TimeBasedTriggeringPolicy/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Logger name="com.mydomain" level="TRACE"/>
        <Root level="TRACE">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

在任何课程中 - 例如A类

private static final Log logger = LogFactory.getLog(A.class);

应用程序具有main()功能,因此可以由IDE或mvn exec运行:java。

问题:

记录工作正常 - 但是采用默认方式。

正如您在log4j2.xml文件中看到的那样,我将级别更改为TRACE,并在模式I中键入:Pattern Pattern以检查log4j2是否正在使用我的自定义配置。

不显示logger.trace()。没有文字Pattern Pattern。控制台中的log4j没有错误/警告。

请帮助,并告诉我我做错了什么?

修改

@BrunoMarcoVisioli告诉我使用org.apache.logging.log4j.LogManager代替LogFactory。所以我在main()方法中添加了新的记录器:

private static final Logger logger_new = LogManager.getLogger(CalculationApp.class);

通过此logger_new进行记录工作正常,因此我设置了TRACE级别,我在应用程序启动时也会看到一些日志,首先:

Starting configuration XmlConfiguration[location=target\classes\log4j2.xml]

但是登录LogFactory仍然无效。

2 个答案:

答案 0 :(得分:5)

您需要将log4j-jcl依赖项添加到POM中,它将作为commons-logging和log4j2之间的桥梁。

答案 1 :(得分:-1)

它通常是文件所在位置的问题..

来自文档

默认情况下,Log4j在类路径中查找名为log4j2.xml(不是log4j.xml)的配置文件。