错误消息正在所有日志文件中打印

时间:2019-05-07 05:38:07

标签: log4j2

日志错误消息将被打印到所有日志文件而不是错误文件中。不知道我在配置中错过了什么。谁能检查并让我知道

我尝试了所有排列和组合,但似乎没有任何效果。 我想我缺少一些配置,但不确定是什么。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="LOG_PATTERN">
            %d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%X{id}] ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
        </Property>
    </Properties>


     <Appenders>
         <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
        <RollingFile name="ROOTLOGS" fileName="${sys:LOG_DIR}bot.log"
                     filePattern="${sys:LOG_DIR}bot-%d{yyyy-MM-dd}-%i.log.gz" >
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}- [%-5level] : %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />

            </Policies>
            <DefaultRolloverStrategy max="10" />
             <ThresholdFilter level="DEBUG"/>
        </RollingFile>
        <RollingFile name="ERRORLOGS" fileName="${sys:LOG_DIR}boterror.log"
                     filePattern="${sys:LOG_DIR}boterror-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
             <ThresholdFilter level="ERROR"/>
        </RollingFile>
    </Appenders>


    <Loggers>

        <Logger name="com.org.bot" level="DEBUG" additivity="false">
            <appender-ref ref="ERRORLOGS" />
            <appender-ref ref="ROOTLOGS" />
        </Logger>

        <Root level="info" additivity="false">
            <AppenderRef ref="ConsoleAppender"/>
            <AppenderRef ref="ROOTLOGS"  />
            <AppenderRef ref="ERRORLOGS" />
        </Root>

    </Loggers>
</Configuration>

期望的是,错误消息仅应打印到boterror.log文件中,而正常的应用程序消息应仅打印到bot.log中。

2 个答案:

答案 0 :(得分:1)

来自ROOTLOGS

DENY 错误消息。

    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
        <RollingFile name="ROOTLOGS" fileName="${sys:LOG_DIR}bot.log"
                     filePattern="${sys:LOG_DIR}bot-%d{yyyy-MM-dd}-%i.log.gz" >
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}- [%-5level] : %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
            <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
        </RollingFile>
        <RollingFile name="ERRORLOGS" fileName="${sys:LOG_DIR}boterror.log"
                     filePattern="${sys:LOG_DIR}boterror-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
            <ThresholdFilter level="ERROR"/>
        </RollingFile>
    </Appenders>

答案 1 :(得分:-1)

这才是最后的把戏。无论 sazzad 提出了什么建议,+我都需要向ERRORLOG添加阈值过滤器,而没有将普通日志也添加到ERRORLOG中。

这是符合我期望的最终配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="LOG_PATTERN">
            %d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%X{id}] ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
        </Property>
    </Properties>


     <Appenders>
         <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
        <RollingFile name="ROOTLOGS" fileName="${sys:LOG_DIR}bot.log"
                     filePattern="${sys:LOG_DIR}bot-%d{yyyy-MM-dd}-%i.log.gz" >
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}- [%-5level] : %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />

            </Policies>
            <DefaultRolloverStrategy max="10" />

             <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
        </RollingFile>
        <RollingFile name="ERRORLOGS" fileName="${sys:LOG_DIR}boterror.log"
                     filePattern="${sys:LOG_DIR}boterror-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout>
                <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
           <ThresholdFilter level="ERROR"/> 
        </RollingFile>

    </Appenders>


    <Loggers>

        <Logger name="com.org.bot" level="DEBUG" additivity="false">
            <appender-ref ref="ERRORLOGS" />
            <appender-ref ref="ROOTLOGS" />
        </Logger>

        <Root level="info" additivity="false">
            <AppenderRef ref="ConsoleAppender"/>
            <AppenderRef ref="ROOTLOGS"  />
            <AppenderRef ref="ERRORLOGS" />
        </Root>

    </Loggers>
</Configuration>