如何配置具有两个根级别的 log4j2?

How to configure log4j2 with two root levels?

我想按以下方式配置 log4j2:

  1. 向哨兵报告错误事件。
  2. 将 INFO 事件报告到日志文件。

类似于:

    <Loggers>
        <!-- ERROR events are reported to Sentry. -->
        <Root level="error">
            <AppenderRef ref="Sentry" />
        </Root>

        <!-- INFO events are reported to log file. -->
        <Root level="info">
            <AppenderRef ref="myLog" />
        </Root>

但是我当然会收到错误消息“配置有多个根记录器。只能有一个。”。

你也可以为 appender 指定日志级别 -

<Loggers>
        <Root>
            <AppenderRef ref="Sentry" level="error "/>
            <AppenderRef ref="myLog" level="info" />
        </Root>
</Loggers>

使用此配置,错误和更高级别的日志将发送到 Sentry appender。并且信息和以上级别的日志(包括错误)将被发送到myLog

适合我的解决方法:

    <!-- ERROR events are reported to Sentry. -->
    <Root level="error">
        <AppenderRef ref="Sentry" />
    </Root>

    <!-- INFO events are reported to myLog. -->
    <Logger name="com" level="info">
        <AppenderRef ref="myLog" />
    </Logger>
    <Logger name="org" level="info">
        <AppenderRef ref="myLog" />
    </Logger>