I've been reading the logback manual for 2 hours and still can't figure how to do what I need.
It is as simple as the title says: I want to log only the errors to a file, and the other levels (including ERROR) to console.
This is the root section of my logcat.xml file:
<root level="TRACE" >
<appender-ref ref="CONSOLE_APPENDER" />
<appender-ref ref="FILE_APPENDER" />
</root>
The problem with this configuration is that it logs every level >= TRACE to both appenders.
I could let the root with only console, and define a file logger:
<logger name='file_logger' level='ERROR' >
<appender-ref ref="FILE_APPENDER" />
</logger>
But then I'd have to call the normal logger like this:
LoggerFactory.getLogger(ClientClass.class);
And the file logger like this:
LoggerFactory.getLogger("file_logger");
I don't wan't to choose the logger for each class. I just want to get the root logger from the factory using the class as parameter, and have it do the correct thing depending on the level.
Is this possible?
Refer below code:
I don't understand why wrong answer here is upvoted. The guy wants ONLY error messages in his file.
Here is the correct answer:
Reference: https://logback.qos.ch/manual/filters.html#levelFilter
Put this into your file appender definition:
The
ThresholdFilter
is inlogback-classic.jar
.