Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Log4j2 - debug-level logging except for Spring

I'd like my application to run at Debug level, except for Spring, which is producing a huge amount of logging statements, which makes it hard to read through the logs. I've currently configured my Log4j2 file like this:

<Configuration status="debug">
    <Appenders>
        <RollingFile name="systemLog" fileName="C:/test/logs/system.log" includeLocation="true"
                    filePattern=""C:/test/logs/system-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{ISO8601} - %-5level [%t] %C %M %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="15 MB"/>
            </Policies>
        </RollingFile>
        <Async name="systemAsyncAppender" includeLocation="true">
            <AppenderRef ref="systemLog" />
        </Async>
    </Appenders>
    <Loggers>
        <SpringLogger name="org.springframework.*" level="error" additivity="false">
            <AppenderRef ref="systemAsyncAppender" />
        </SpringLogger>
        <Root level="debug" includeLocation="true">
            <AppenderRef ref="systemAsyncAppender" />
        </Root>
    </Loggers>
</Configuration>

I thought that setting up the SpringLogger would set Spring to only run at ERROR level and, and write to the same log as everything else, but I'm still seeing full Spring DEBUG output. I have vague memories of being able to do this very easily with the old log4j.properties files (I think it was as simple as log4j.category.org.springframework=ERROR), but I'm not sure how to do this with Log4J2.

(Using Log4J2 2.0.2, spring 3.2.11)

like image 813
FrustratedWithFormsDesigner Avatar asked Apr 14 '26 05:04

FrustratedWithFormsDesigner


1 Answers

I don't think log4j2 has any special configuration for Spring, so <SpringLogger> doesn't seem appropriate here.

Instead, just declare a regular logger

<logger name="org.springframework" level="error" additivity="false">
    ...
</logger>

Also note the logger name. These are hierarchical. You don't need the * (and I think it actually breaks it).

like image 161
Sotirios Delimanolis Avatar answered Apr 16 '26 17:04

Sotirios Delimanolis



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!