Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure log4j2 with two root levels?

Tags:

log4j2

I would like to configure log4j2 the following way:

  1. Report ERROR events to Sentry.
  2. Report INFO events to log file.

Something like:

    <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>

But of course I get error "Configuration has multiple root loggers. There can be only one.".

like image 770
isobretatel Avatar asked Oct 23 '25 15:10

isobretatel


2 Answers

You can specify log level for appender as well -

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

With this configuration, error and above level logs will be sent to Sentry appender. And info and above level logs (including error) will be sent to myLog

like image 54
Vikas Sachdeva Avatar answered Oct 26 '25 10:10

Vikas Sachdeva


Workaround that works for me:

    <!-- 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>
like image 21
isobretatel Avatar answered Oct 26 '25 10:10

isobretatel



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!