官方地址:

https://logback.qos.ch/

如果打不开请fq

logback vs log4j

比log4j快,可更多自定义的配置。使用也比较灵活 。

@Slf4j注解

这个注解相当于下面这句话。

private static final Logger log = LoggerFactory.getLogger(Example.class);

配置

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>
<root level="debug">
    <appender-ref ref="STDOUT"/>
</root>

STDOUT 对应appender中的name

指定logger name

<logger name="com.logback.other" level="INFO"/>
<logger name="com.logback.demo.tests" level="WARN"/>
// Logger 标签也继承 root 标签的appender-ref 


 Logger demoLogger = LoggerFactory.getLogger("com.logback.demo");
 Logger testsLogger = LoggerFactory.getLogger("com.logback.demo.tests");
 demoLogger.debug("demoLogger is not logged debug < info");
 demoLogger.info("demoLogger is logged info == info");
 testsLogger.info("testsLogger is not logged warn > info");
 testsLogger.warn("testsLogger is logged warn = warn");

//output 
//因为定义的logger的name com.logback.demo.tests , 级别是warn,所以打印info的日志不会输出。
16:50:34.631 [main] DEBUG com.logback.demo - demoLogger is not logged debug < info
16:50:34.634 [main] INFO  com.logback.demo - demoLogger is logged info == info
16:50:34.635 [main] WARN  com.logback.demo.tests - testsLogger is logged warn = warn
    

写入文件

  1. logback.xml中的配置
    定义一个属性,指定一个变量。 在append标签中。 用${LOG_DIR}读取定义的变量。

root标签中。增加一个append-ref 指向名称为 FILE的appender .

<property name="LOG_DIR" value="d://application" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${LOG_DIR}/tests.log</file>
    <append>true</append>
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
</appender>

 <root level="debug">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
 </root>


随心所欲

在想加日志的地主定义想输出的日志 ,还可以根据日志级别输出。

 <property name="LOG_DIR" value="d://application" />
    <appender name="mydefineNameAppend" class="ch.qos.logback.core.FileAppender">
        <file>${LOG_DIR}/mydefineNameAppend.log</file>
        <append>true</append>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="mydefineName" level="WARN">
        <appender-ref ref="mydefineNameAppend"/>
    </logger>


调用

获得logbak中的name 为mydefineName 的logger标签,并根据日志级别输出。

Logger mydefineLog = LoggerFactory.getLogger("mydefineName");
mydefineLog.warn("mydefineLog content");

本文由 hcb 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论