官方地址:
如果打不开请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
写入文件
- 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");
还不快抢沙发