Reputation: 3958
I would like to configure log4j2 the following way:
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.".
Upvotes: 4
Views: 8259
Reputation: 41
I approached similar issue. I've tried both suggested solutions and any of those were working for me. After few hours of trying to figure it out I have found out on logging.apache.org solution very similar to suggested one by Vikas Sachdeva.
<Loggers>
<Root level="info">
<AppenderRef ref="Sentry" level="error "/>
<AppenderRef ref="myLog" level="info" />
</Root>
</Loggers>
Without setting up level info directly in root my app was logging nothing. Adding this small change everything works great.
Upvotes: 2
Reputation: 3958
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>
Upvotes: 2
Reputation: 5803
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
Upvotes: 13