如何针对不同的包进行不同的日志记录?

时间:2013-03-28 21:06:44

标签: java logging logback

在Log4j中,很容易在应用程序中将不同的包记录在不同的级别(这对于调试尤其有用)。除了创建自己的过滤器之外,还有一种简单的方法吗?

我尝试在根标记内创建一个标记,或者在其名称之后创建一个标记(即让人联想到Log4J),然后将其中的appender放入其中,但是它没有用。

那么,是否内置了LogBack方法来定义不需要自定义过滤器实现的某些包的记录器和/或日志记录级别?

1 个答案:

答案 0 :(得分:7)

我正在使用Play! Web应用程序,并具有不同包的不同日志级别。您可以使用<logger> element的名称指定包。

我的配置是:

<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>