当前位置: 首页 > 知识库问答 >
问题:

log4j2没有看到配置xml

白子明
2023-03-14

也许,我搜索了所有的互联网,但我一定错过了什么。

我根据文档配置Log4j2和Commons日志。我添加了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\main\资源\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,并在模式中键入:Pattern Pattern以检查log4j2是否使用了我的自定义配置。

没有logger.trace()出现。没有文本Pattern。控制台中的log4j没有错误/警告。

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

编辑:

@BrunoMarcoVisioli告诉我使用org。阿帕奇。登录中。log4j。LogManager而不是LogFactory。因此,我在main()方法中添加了新的记录器:

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

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

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

但是通过LogFactory登录仍然不起作用。

共有2个答案

孟安民
2023-03-14

文件的位置通常有问题。。

从留档

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

萧鸿轩
2023-03-14

您需要将log4jjcl依赖项添加到POM中,它将充当commons日志和log4j2之间的桥梁。

 类似资料:
  • 最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。

  • 我已经将log4j从1.2.17升级到了2.16.0。因此我不得不重写我的log4j。并将其重命名为log4j2.xml。我已经做了必要的改变。然而,我的新配置似乎没有加载。我试图通过两个web配置log4j。xml: 和。两种方法都失败了,我在mylog.log文件中没有任何日志。但是当在本地运行应用程序时,控制台会显示日志。 这是我的log4j2.xml: 我尝试使用以下工具调试log4j配置

  • 这是我的配置文件: 日志配置文件读起来非常清楚,因为它使用my/log目录中定义的模式正确地写入。 这是我在代码中实例化它的方式:

  • 我已经将其隔离到一个非常简单的测试项目中,该项目除了简单的log4j2test配置使用之外没有其他用途。文件目录结构: 建筑sbt: log4j2.xml内容复制/粘贴从示例在官方留档:https://logging.apache.org/log4j/2.x/manual/configuration.html SimpleMain。斯卡拉: 我跑步与 输出:

  • 我是Log4J2的新手。我正在尝试配置一个使用slf4j和LOG4J2的日志记录系统。

  • 我们添加了使用log4J 2的库。X,但我们仍在使用log4J 1。X(主要是因为我们有自己的一些应用程序和记录仪)。我被告知解决方案是发送log4J 2。x到slf4j(使用log4j-to-slf4j,版本2。X),然后slf4j到log4J 1。X,使用slf4j-log4j12,版本1。X. 这就是我刚才所做的,但我仍然得到以下信息: ERROR StatusLogger未找到log4j2