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

log4j2.xml配置文件没有被加载

张永嘉
2023-03-14

我已经将log4j从1.2.17升级到了2.16.0。因此我不得不重写我的log4j。并将其重命名为log4j2.xml。我已经做了必要的改变。然而,我的新配置似乎没有加载。我试图通过两个web配置log4j。xml:

<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>classpath:log4j2.xml</param-value>
</context-param>

-Dlog4j2.configurationFile。两种方法都失败了,我在mylog.log文件中没有任何日志。但是当在本地运行应用程序时,控制台会显示日志。

这是我的log4j2.xml:

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

<Configuration status="trace">
    <Appenders>
      <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%-5p %c{1} - %m%n"/>
      </Console>
      <RollingFile name="DAILY_LOG" fileName="${catalina.base}/logs/mylog.log"
                   filePattern="${catalina.base}/logs/mylog.log.%d{yyyy-MM-dd}">
        <PatternLayout pattern="%d %-5p [%c] [%X{sid}:%X{uid}] %m%n "/>
        <Policies>
          <TimeBasedTriggeringPolicy interval="1"/>
        </Policies>
      </RollingFile>
    </Appenders>

    <Loggers>
       <!-- Limit the org.springframework category to INFO as its DEBUG is verbose -->
       <Logger name="org.springframework" level="INFO"/>
       <!-- Limit the org.hibernate category to INFO as its DEBUG is verbose -->
       <Logger name="org.hibernate" level="INFO"/>
       <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
       <Logger name="org.apache" level="INFO"/>
       <Logger name="org.myproject" level="INFO"/>
       <!-- Root Logger -->
       <Root level="INFO">
         <AppenderRef ref="STDOUT"/>
         <AppenderRef ref="DAILY_LOG"/>
       </Root>
    </Loggers>
</Configuration>

我尝试使用以下工具调试log4j配置:-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=trace。我注意到LoggerContext实例创建得很好,所有列出的记录器都构建得很好。

我想知道我的配置是否写错了。有人能证实或否认这一点给我吗。


共有1个答案

万俟光临
2023-03-14
匿名用户

我找到了解决办法。我花了一段时间才弄明白。这个问题是由于log4j 2.x用来解析系统属性的新语法造成的。与使用${some.property}语法进行属性替换的log4j 1.x不同,log4j 2.x使用${sys:some.property}。我必须添加sys前缀才能工作。

资料来源:https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution

 类似资料:
  • 我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放

  • 也许,我搜索了所有的互联网,但我一定错过了什么。 我根据文档配置Log4j2和Commons日志。我添加了,但其配置对应用程序输出没有影响。我看Log4j没有读这个文件。这是我的配置: pom.xml \src\main\资源\log4j2.xml 在任何类中-例如A类 应用程序具有函数,因此可以由IDE或mvn exec:java运行。 问题: 日志记录正在工作-但使用默认方式。 正如您在文件中

  • 我试图使用嵌入Java应用程序中的Log4j2的XML配置文件,但该文件不起作用。 代码: 错误: 线程“main”java中出现异常。lang.ClassCastException:org。阿帕奇。登录中。log4j。果心配置。无法将XMLConfiguration转换为组织。阿帕奇。登录中。log4j。果心配置。中的配置工厂。枪战。发射前。服务器主要的main(main.java:62)

  • 问题内容: 我想使用新的Log4J 2-Java Logging Framework。一切正常,但是一个小时以来,我尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认软件包中。 将log4j2.xml文件移动到项目中的任何位置 将log4j2.xml文件命名为“ log4j.xml

  • 问题内容: 我已将应用程序迁移到log4j 2,并通过log4j2.xml对其进行了配置 但是,我正在使用的某些库取决于log4j1。如果我使用以下命令运行该应用程序: log4j 1抱怨找不到配置文件。我正在使用log4j 2,log4j-1.2-api-2.0-rc1.jar提供的log4j 1.x桥。是否可以使用单个log4j2.xml进行配置? 我尝试过的替代方法是同时配置log4j和lo

  • 我已经将应用程序迁移到Log4J2,并通过log4j2.xml对其进行了配置 但是,我使用的一些库依赖于log4j1。如果我使用以下方式运行应用程序: 我尝试的另一种方法是将log4j和log4j2配置在一起: 我担心的是日志配置文件和输出的碎片化。我还担心log4j.xml和log4j2.xml之间可能存在的冲突。例如,logfile Error.log被配置为使用log4j1中的FileApp