Log4j2和Airbrake-如何为记录器设置不同的日志级别?

时间:2019-06-10 17:38:10

标签: java log4j log4j2 airbrake

我想将所有INFO日志打印到我的控制台,但只将ERROR日志发送到我的Airbrake附加程序。

我的log4j2有一个根记录器,该记录器添加了ConsoleAppender并设置为日志级别INFO。

<Loggers>
    <Root level="INFO">
        <AppenderRef ref="ConsoleAppender"/>
    </Root>
</Loggers>

然后我用应用程序com.acme.app的名称创建一个记录器。

Logger logger = LogManager.getLogger("com.acme.app");
logger.info("This is an info log");
logger.error("This is an error log");

使用此配置,当我运行我的应用程序时,我将获得输出

  

2019-06-10 12:20:48 [main] INFO ...-这是一条信息日志

     

2019-06-10 12:20:48 [main]错误...-这是错误日志

我现在想添加气压刹车附加程序,并且仅将错误日志发送到气压刹车,但是我想继续打印INFO和ERROR日志。

<Loggers>
    <Root level="INFO">
        <AppenderRef ref="ConsoleAppender"/>
    </Root>

    <Logger name="com.acme.app" level="ERROR">
        <AppenderRef ref="Airbrake"/>
    </Logger>
</Loggers>

这将开始将错误日志发送到我的刹车片,但是现在我将仅 在控制台中看到错误日志。

如果我将级别设置为INFO或将追加程序移动到根目录,我将看到INFO和ERROR日志,但是我还将INFO日志发送到airbrake,这是不可取的。

我还尝试为同一记录器名称添加多个级别,并将INFO明确指向控制台-

<Loggers>
    <Root level="INFO">
        <AppenderRef ref="ConsoleAppender"/>
    </Root>

    <Logger name="com.acme.app" level="ERROR">
        <AppenderRef ref="Airbrake"/>
    </Logger>

    <Logger name="com.acme.app" level="INFO">
        <AppenderRef ref="ConsoleAppender"/>
    </Logger>
</Loggers>

我先尝试了ERROR,然后又尝试了INFO,然后似乎使用的是最后定义的那个。如果INFO排在最后,它将打印所有日志,但不发送任何错误;如果ERROR排在最后,它将发送错误,但不打印任何INFO日志。

我如何让Airbrake捕获所有的错误日志,但是又允许其他日志回退到根记录器,而不将所有日志发送到Airbrake附加器?

0 个答案:

没有答案
相关问题