[logback-user] Root logger with debug, appender with trace

Felix Natter fnatter at gmx.net
Mon Dec 26 10:41:47 CET 2016


hello,

I have a spring application that logs to a primary log file
("caseportal.log"):

(note: I replaced the real root package of my code by "root.package")

    <!--Daily rolling file appender -->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${catalina.base}/logs/caseportal.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${catalina.base}/logs/caseportal-%d.log.zip</FileNamePattern>
            <maxHistory>120</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

plus *additionally*, for some packages, to several other log files
(picked one example, "cp-deletion.log", here):

    <appender name="deletion" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${catalina.base}/logs/cp-deletion.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${catalina.base}/logs/cp-deletion-%d.log.zip</FileNamePattern>
            <maxHistory>120</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>

    [...]

    <logger name="root.package.core.service.deletion" level="DEBUG">
    	<appender-ref ref="deletion"/>
    </logger>
    <logger name="root.package.core.domain.deletion" level="DEBUG">
    	<appender-ref ref="deletion"/>
    </logger>
    <logger name="root.package.core.scheduledtasks.BulkDeletionCron" level="DEBUG">
    	<appender-ref ref="deletion"/>
    </logger>
    <logger name="root.package.frontend.runners.BulkDeletionRunner" level="DEBUG">
    	<appender-ref ref="deletion"/>
    </logger>

Now I would like some packages to *only* log to another log file
("cp-retentionperiodad.log").
I am trying to achieve this by logging with loglevel TRACE, configuring
the root logger to log only DEBUG for those packages:

    <logger name="root.package" level="DEBUG"/>

and configuring the other log file with loglevel TRACE for those
packages:

    <appender name="retentionperiodad" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${catalina.base}/logs/cp-retentionperiodad.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${catalina.base}/logs/cp-retentionperiodad-%d.log.zip</FileNamePattern>
            <maxHistory>120</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${logPattern}</pattern>
        </encoder>
    </appender>
    
    <logger name="root.package.core.scheduledtasks.RetentionPeriodAdCron" level="TRACE">
    	<appender-ref ref="retentionperiodad"/>
    </logger>
    <logger name="root.package.core.ad.authorize.ActiveDirectoryClient" level="TRACE">
    	<appender-ref ref="retentionperiodad"/>
    </logger>

But the "root logger" (?) caseportal.log still logs these TRACE
messages, so they appear there (and in cp-retentionperiodad.log).

Is there a better way to log some packages *only* to another log?
If not, how can I get this to work?

The complete logback.xml is attached.

Many Thanks and Merry Christmas for those who celebrate this!
-- 
Felix Natter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: logback.xml
Type: application/xml
Size: 5682 bytes
Desc: not available
URL: <http://mailman.qos.ch/pipermail/logback-user/attachments/20161226/7f191529/attachment.xml>


More information about the logback-user mailing list