Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to have different logging for different packages?

In Log4j it is easy to have different packages in your application being logged at different levels (this is especially useful for debugging). Is there an easy way of doing this other than creating your own filter?

I tried creating an tag within the root tag or after whose name is the package (ie reminiscent of Log4J) and then placed the appenders for it within but, but it didn't work.

So, is there a built in to LogBack way of defining loggers and/or logging levels for certain packages that does not require a custom filter implementation?

like image 587
Sled Avatar asked Mar 28 '13 21:03

Sled


1 Answers

I'm using a Play! web app and have different log levels for different packages. You can specify the package in the name of the <logger> element.

My config is:

<configuration>

    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel"/>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${application.home}/logs/application.log</file>
        <encoder>
            <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
        </encoder>
    </appender>
    <appender name="TIMESTAMP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>${application.home}/logs/batches/current.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" maxHistory="720">
            <fileNamePattern>${application.home}/logs/batches/archived/%d{yyyy/MM/dd}.gz</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>{mpoplib} %date - [%level] in %thread %n%message%n%xException%n</pattern>
        </encoder>
    </appender>


    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
        </encoder>
    </appender>

    <logger name="play" level="INFO">
        <appender-ref ref="FILE"/>
    </logger>
    <logger name="application" level="INFO">
        <appender-ref ref="FILE"/>
    </logger>
    <logger name="ru.kupikupon.mpoplib" level="DEBUG">
        <appender-ref ref="TIMESTAMP_FILE"/>
    </logger>


    <root level="DEBUG">
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>
like image 150
Valentin V Avatar answered Oct 27 '22 09:10

Valentin V