log4j2 配置未将以 org 开头的包记录到文件中

log4j2 configuration not logging package starting with org to file

我正在将一个项目从 log4j 迁移到 log4j2。该项目正在使用 log4j.properties 文件。由于 log4j2 不支持属性文件,我已经成功编写了一个正确的 xml 配置文件,我相信...在 运行 项目中,我注意到以 org 开头的包的错误将被写入现在正在将文件写入控制台。这在 log4j 版本 1 中从未发生过。

这是 log4j.properties 文件

log4j.rootLogger=ERROR, A1

# Logger for all org packages
log4j.logger.org=ERROR, A2
log4j.additivity.org=false
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{MMM dd HH:mm:ss} %-5p [%t] %c{2} - %m%n
log4j.appender.A1.File=../webapps/docs/log/app.log
log4j.appender.A1.MaxFileSize=1000KB
log4j.appender.A1.MaxBackupIndex=10

log4j.appender.A2=org.apache.log4j.RollingFileAppender    
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{MMM dd HH:mm:ss} %-5p [%t] %c{2} - %m%n
log4j.appender.A2.File=../webapps/docs/log/org.log
log4j.appender.A2.MaxFileSize=5000KB
log4j.appender.A2.MaxBackupIndex=100

这是后续的 log4j2.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Properties>
        <Property name="log-path">/mnt/logs/</Property>
    </Properties>
    <Appenders>         
        <RollingFile name="RootErrorFile" fileName="${log-path}/app.log"
                        filePattern="${log-path}/app-%d{yyyy-MM-dd}-%i.log" >
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS} %-5p [%t] %c{1}: %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
        </RollingFile>
        <RollingFile name="OrgFile" fileName="${log-path}/org.log"
                        filePattern="${log-path}/org-%d{yyyy-MM-dd}-%i.log" >
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS} %-5p [%t] %c{1}: %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>           
        <Logger name="org" level="off" additivity="false">
            <appender-ref ref="OrgFile"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="RootErrorFile"/>          
        </Root>
    </Loggers>
</Configuration>

tomcat 控制台上输出的错误模式为

Mar 05, 2015 5:53:54 PM org.apache.commons.digester.Digester error
SEVERE: Parse Error at line 290 column 27: Attribute "msg" is required and must be specified for element type "validator".
org.xml.sax.SAXParseException; systemId: jndi:/localhost/docs/WEB-INF/validator-rules.xml; lineNumber: 290; columnNumber: 27; Attribute "msg" is required and must be specified for element type "validator".

在这方面的任何帮助都会很棒...提前致谢。

您已将 off 记录转入 org 包。更改此行:

<Logger name="org" level="off" additivity="false">

通过以下方式:

<Logger name="org" level="error" additivity="false">

如果您使用 Struts 1.x,这将使用 Apache Commons Logging。所以你需要一个 bridge