log4j2奇怪的滚动日志行为和rmiregistry输出" ERROR StatusLogger Log4j2找不到日志记录实现..."

时间:2016-05-12 20:13:22

标签: java logging log4j2 rmiregistry

我刚开始使用log4j2。我将它用于使用RMI的多个JVM。我有两个问题。

  1. 我使用与应用程序相同的CLASSPATH启动rmiregistry,因为它是自己的可执行文件。它启动时没有任何错误,但一旦RMI客户端与它通信,rmiregistry会输出此错误:ERROR StatusLogger Log4j2无法找到日志记录实现。请将log4j-core添加到类路径中...但是log4j-core jar文件已经在CLASSPATH中,如果出现问题,那么为什么应用程序也不输出此错误?

  2. 我正在使用带有OnStartupTriggeringPolicy和SizeBasedTriggeringPolicy的RollingFile appender。从理论上讲,我应该得到如下日志:

  3.   

    foo.log - 活动日志
          foo.log.1 - 如果我在之前已经启动了旧日志       foo.log.2 - 如果我已多次启动它,则会滚动旧日志

    但是当我第一次启动时,它会滚动很多次,即使尚未达到大小限制且活动日志应该已经滚动。换句话说,我明白了:

      

    foo.log
          foo.log.1
          foo.log.2
          foo.log.3 - 活动日志
          foo.log.4

    配置文件(log4j2.xml)内容:

        <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <!-- ********** APPENDERS *********** -->
    
        <Appenders>
            <Console name="CONSOLE" target="SYSTEM_OUT">
                <PatternLayout pattern="%d (%-4r) [%t] %-5p %c %x - %m%n"/>
            </Console>
            <RollingFile
                name="FOO_OUT"
                fileName="/foo/log/foo.log"
                filePattern="/foo/log/foo.log.%i"
                append="true">
    
                <PatternLayout>
                    <Pattern>%d (%-4r) [%t] %-5p %c %x - %m%n</Pattern>
                </PatternLayout>
    
                <DefaultRolloverStrategy max="24" fileIndex="min"/>
                    <Policies>
                        <OnStartupTriggeringPolicy />
                        <SizeBasedTriggeringPolicy size="10 MB"/>
                    </Policies>
            </RollingFile>
        </Appenders>
        <Loggers>
            <asyncLogger name="au.com" level="DEBUG">
                <AppenderRef ref="FOO_OUT"/>
            </asyncLogger>
    
            <asyncRoot level="debug">
                <AppenderRef ref="FOO_OUT"/>
            </asyncRoot>
        </Loggers>
    </Configuration>
    

    CLASSPATH包含很多jar,但与lo4j2相关的主要是:

    /foo/lib/slf4j/slf4j-api-1.7.21.jar
    /foo/lib/slf4j/jcl-over-slf4j-1.7.21.jar
    /foo/lib/slf4j/log4j-slf4j-impl-2.5.jar
    /foo/lib/log4j2/log4j-core-2.5.jar
    /foo/lib/log4j2/log4j-api-2.5.jar
    /foo/lib/log4j2/disruptor-3.3.4.jar
    

0 个答案:

没有答案