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

不为log4j2添加RollingFile附加符

申屠瀚海
2023-03-14

我正在为我的web应用程序设置log4j2。问题是,这样配置的记录器没有使用Main和Err appender记录任何内容。如果通过调试器查看log4j2代码,就会发现在log4j2初始化期间没有添加这两个附加符。

以前,每个附加程序都有单独的记录器,但我们只需要一个记录器。这样做有可能吗?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" strict="true" name="log4j2 config">
  <Properties>
    <Property name="dataPattern">%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{3} - %m%n%ex</Property>
    <Property name="logDir">${web:rootDir}</Property>
    <Property name="moduleName">mod</Property>
    <Property name="logLevel">@log.level@</Property>
  </Properties>

  <Filter type="ThresholdFilter" level="all"/>
 <Appenders>
    <Appender type="Console" name="Out">
      <Layout type="PatternLayout" pattern="${dataPattern}"/>
    </Appender>

  <Appender type="RollingFile" name="Main" fileName="${logDir}/${moduleName}_main.log"
                   filePattern="${logDir}/${moduleName}_main.log.%i">
        <Layout type="PatternLayout" pattern="${dataPattern}"/>
        <Policies>
          <SizeBasedTriggeringPolicy size="8 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="10" fileIndex="min"/>
    </Appender>

    <Appender type="RollingFile" name="Err" fileName="${logDir}/${moduleName}_err.log"
                   filePattern="${logDir}/${moduleName}_err.log.%i">
        <Layout type="PatternLayout" pattern="${dataPattern}"/>
        <Filter type="ThresholdFilter" level="error"/>
        <Policies>
          <SizeBasedTriggeringPolicy size="8 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="10" fileIndex="min"/>
    </Appender>
 <Loggers>
      <Logger name="com.dsl.${moduleName}" level="${logLevel}">
          <AppenderRef ref="Main"/>
          <AppenderRef ref="Err"/>
      </Logger>
<Root level="${logLevel}">
        <AppenderRef ref="Main"/>
        <AppenderRef ref="Err">
            <Filter type="ThresholdFilter" level="error"/>
        </AppenderRef>      
    </Root>
  </Loggers>
</Configuration>

错误无法为元素RollingFile调用类class org.apache.logging.log4j.core.appender.RollingFileAppender中的工厂方法。java.lang.IllegalStateException:未找到org.apache.logging.log4j.core.appender.RollingFileAppender类的工厂方法

以及:

ERROR Null object returned for RollingFile in Appenders.
ERROR Null object returned for RollingFile in Appenders.
ERROR Unable to locate appender "Main" for logger config "root"
ERROR Unable to locate appender "Err" for logger config "root"
ERROR Unable to locate appender "Main" for logger config "com.dfs.acs"
ERROR Unable to locate appender "Err" for logger config "com.dfs.acs"

共有1个答案

蒋培
2023-03-14

这似乎是Servlet3.0解析${web:rootdir}的问题。

 类似资料:
  • Log4j2 RollingFile追加冲突 下面是我们的log4j2配置文件的简化调试版本(我们每晚滚动,而不是每分钟滚动!)。 这个配置,而不是每分钟创建一个滚动文件 (根据TimeBasedTriggeringPolicy),将创建一个滚动文件(非tarred),包含JSON格式的日志记录,每20KB将被覆盖 (尽管它最终将略大于20KB(参见屏幕截图)。 我们还会得到以下错误(缩写为“..

  • 我刚开始使用log4j2 我正在尝试配置xml,以便使用和附加符将日志发送到日志文件中。这个附加器工作得很好。我想使用appender,这样它就可以每天清除日志文件,但是当它第一次创建日志文件时,它没有将任何日志消息写入创建的文件中,所以我来这里是为了得到一些建议

  • 我有点小问题,找不到解决办法。我想为级别信息而不是级别警告设置图案布局。如果我有一个级别信息的日志,一切都正常,但是如果日志是级别,它会被写入控制台两次(作为级别信息和作为级别警告)。只需将特定级别的所有日志写入该级别和以下级别的us日志即可。 我想将级别信息写入控制台,如:和级别如。

  • 我有一个类,我在其中获取我的所有属性,并在日志记录之前隐藏它们的密码。 我已经迁移到log4j2,并希望测试这个类,检查log4j2的输出。它目前使用log4j并且可以工作,但是当我迁移到log4j2时,我得到了 但是,还有其他与这个mock的交互:mockappender.getName();->在org.apache.logging.log4j.core.config.AbstractConf

  • 我正在使用一个同时具有时间(每日)和大小触发器策略的RollingFile附加器。filePattern(用于在翻转时重命名文件)包含: 例如,具有: APP-20180205-1.log APP-20180205-2.log APP-20180205-3.log 和log4j2当前写入的内容,假设:/tmp/app.log

  • 问题内容: 我需要将事件记录到系统日志中。我使用lo4j2和syslog附加程序。我的appender阻止如下所示: 如您所见,我有一个带有特定PatternLayout的Console附加程序和RollingFile附加程序。我想对Syslog附加程序使用相同的PatternLayout。但是,系统日志中的日志消息似乎总是使用预定义的布局。我尝试执行以下操作: 但这没有任何作用。syslog消息