I want to have two log files in my application (Spring Integration), debug.log and main.log. I want to run main.log at an INFO level and debug.log at a DEBUG level. This is doable with filters on the appenders. I want to log different levels to the appenders based on the source. In other words
<logger name="org.springframework" level="ERROR">
<appender-ref ref="main" />
</logger>
<logger name="org.springframework" level="DEBUG">
<appender-ref ref="debug" />
</logger>
<logger name="com.myapp" level="INFO">
<appender-ref ref="main" />
</logger>
<logger name="com.myapp" level="DEBUG">
<appender-ref ref="debug" />
</logger>
So to summarise:
- Spring logger
- main -> ERROR
- debug -> DEBUG
- com.myapp logger
- main -> INFO
- debug -> DEBUG
Because of this I have to have the loggers running at DEBUG and a threshold filter on an appender isn't fine grained enough.
Update Added clarity to the question
Best Answer
Create a ThresholdLoggerFilter class which can be put on an appender like:
The following code works