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

向log4j2记录器添加文件名

伯晨
2023-03-14

我在XML中指定log4j2 logger的文件名,如下所示。一切正常,但我得到了错误

2017-09-06 16:54:33,496主要错误未知的对象"RlandAccessFileAppender的类型org.apache.logging.log4j.core.appender.RlandAccessFileAppender被忽略:尝试嵌套它在其中之一:["Appender","Logger","Properties","脚本","CustomLevels"]。

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration package="log4j.test" 
                   status="WARN">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{dd/MM/yyyy HH:mm:ss} %c %m%n"/>
            </Console>
        </Appenders>
       <RandomAccessFile  name="FILE" fileName="${sys:log4j.saveDirectory}/CMSAutomation.${date:yyyy-MM-dd_hh-mm-ss}.log" append="true" immediateFlush="false">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss}  %-6p  %C{1}.%t:%L  >>> %m%n"/>
        </RandomAccessFile >
        <Loggers>
            <Logger name="log4j.test.Log4jTest" level="debug">
                <AppenderRef ref="Console"/>
            </Logger>
            <Root level="trace">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>

共有1个答案

钱照
2023-03-14

出现此错误的原因是RandomAccessFileappender中未定义

下面是定义任何appender的正确方法,包括RandomAccessFileappender-

<?xml version="1.0" encoding="UTF-8"?>
<Configuration package="log4j.test" 
               status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{dd/MM/yyyy HH:mm:ss} %c %m%n"/>
        </Console>
        <RandomAccessFile  name="FILE" fileName="${sys:log4j.saveDirectory}/CMSAutomation.${date:yyyy-MM-dd_hh-mm-ss}.log" append="true" immediateFlush="false">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss}  %-6p  %C{1}.%t:%L  >>> %m%n"/>
        </RandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger name="log4j.test.Log4jTest" level="debug">
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="trace">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

您可以检查相同的log4j2留档在这里。

另外一点,您没有在任何记录器中使用RandomAccessFileappender。如果您不在任何记录器中定义它,它将无法工作。

 类似资料:
  • 我正在尝试通过代码添加一个自定义的附加器,该附加器应该记录一些包。所有的工作都使用以下代码: 所以简而言之..正如您所看到的,如果之前没有定义追加器,我正在创建一个追加器。然后我为org.test创建一个记录器(如果没有添加的话),并将appender添加到这个记录器中。 多谢了。

  • 在log4j1.2中,您只需在运行时获取一个记录器并添加一个appender。例如,这对于测试目的很方便。我们曾经创建一个模拟appender并将其添加到记录器中。随后,我们可以做出不同的断言。 log4j2的等价物是什么? 例如,这个例子展示了其他人是如何添加测试附加器的。 log4j2页面显示了一些关于如何添加附加器的示例。但是,它们将追加器添加到整个上下文中。这似乎不同于为一个特定的记录器添

  • 我试图从Log4j 1.7迁移到Log4j2.4在1.7中,我通过扩展org.apache.log4j创建AppLogger类。记录器和使用扩展的调试/错误/致命方法,例如, 但是在log4j2中。x、 我无法扩展类组织。阿帕奇。登录中。log4j。记录器;实现这一目标的最佳方式是什么?

  • 我有下面的Log4J2配置XML: 但是,每当log4j2 appender写入文件时,它在写入指定的文件路径时不会使用正确的字符串。 log4j2 appender第一次写入文件时,会写入由指定的正确文件路径。但是,只要将具有另一个Id的员工的信息放入线程上下文中,appender仍然会记录到旧文件路径。 例如,appender第一次记录时,它会写入正确的路径: 但当记录器记录下一个员工Id(使

  • 我有麻烦配置我的log4j2.xml文件包括Hibernate日志记录。 这是我的xml文件: 在启动我的罐子时,我会将以下内容打印到控制台: 我似乎从我的应用程序中获取日志到我的滚动文件中,但我不明白为什么这个hibernate记录器没有使用相同的appender。 非常感谢您的帮助!

  • 在XML中,我想要的配置如下所示(但我不想使用XML):