首页 文章

Log4j为每个appender设置不同的日志记录级别

提问于
浏览
1

我正在使用Log4j 2来记录我的应用程序的事件 . 但是我遇到了以下问题 .

目前,所有日志消息都写入两个不同的appender . 一个具有RollingFile类型,而另一个具有Console类型 .

我想要的是RollingFile appender记录INFO级别或更高级别(ERROR,FATAL)的消息,以及Console appender记录ERROR级别或更高级别(FATAL)的消息 .

在我的log4j2.xml文件中,我似乎只能声明整个 Logger (包括其所有appender)的日志记录级别 . 这是我的log4j2.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout>
                <Pattern>%d %level %msg%n</Pattern>
            </PatternLayout>
        </Console>
        
        <RollingFile name="Log" fileName="log/Log.log" filePattern="log/Log-%d{yyyy-MM-dd}-%i.log" append="false">
            <PatternLayout>
                <Pattern>%d %level %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="1 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="Log" />
        </Root>
    </Loggers>
</Configuration>

有这么简单的方法吗?我搜索了log4j文档,但找不到我要找的东西(也许我错过了吗?) . 如果可能的话,我真的更希望解决方案适用于任何appender的类型;不是特定于RollingFile和Console .

EDIT

我看到很多问题,要求将来自特定级别的消息写入文件,同时将消息从不同级别写入不同的文件 . 在我的情况下,我需要将具有特定级别的 HIGHER 的消息写入不同的文件 . 例如,在我提供具有级别ERROR或FATAL的消息的情况下,将向RollingFile和Console写入消息,而具有级别INFO的消息将仅写入RollingFile .

1 回答

相关问题