日志框架Logback
日志框架就是能实现日志输出的工具包。
能力:
1.定制输出目标
2.定制输出格式
3.携带上下文信息
4.运行时选择性输出
5.灵活的配置
6.优异的性能
常用日志框架:JUL、JCL、Log4j、Log4j2、Logback、SLF4j、jboss-logging
框架关系:
日志门面 : JCL 、 SLF4j 、 jboss-logging
日志实现 : Log4j 、Log4j2 、Logback 、JUL
框架选择:
JUL来自官方,但太简陋
jboss-logging不适合大众开发
SLF4j、Log4j、Logback是一个作者,Logback为作者推荐
Log4j2太先进,开源框架支撑少,性能太高
SLF4j、Logback是同一个作者,所以不使用JCL
日志要点:
1.日志写法技巧
//普通日志输出写法
package com.gang.sell.imooc;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {
private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
@Test
public void test1() {
logger.debug("debug...");
logger.info("info....");
logger.error("error...");
}
}
使用注解@Slf4j方便日志,需要在pom.xml加入工具包
WechatIMG1.jpeg
package com.gang.sell.imooc;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {
@Test
public void test1() {
log.debug("debug...");
log.info("info....");
log.error("error...");
}
}
代码这样,能跑,但是log没提示呀,暂保持疑问
Logback配置:
两种:application.properties (配置内容少, xx/src/main/resources/) 和logback-spring.xml (配置内容更多)
application.properties配置:
logging.pattern.console=%d - %msg%n
logging.path=/Users/ganggang/Desktop/sell/logtest
logging.file=/Users/ganggang/Desktop/sell/logtest/sell.log
logging.pattern.level=debug
logging.pattern.console设置日志格式,%d为日期, %msg为日志信息,%n为换行
logging.path 设置日志文件路径,随便写的路径…o,注意路径中没有的文件夹不会自动创建
logging.file设置日志文件,会创建对应文件名日志文件
logging.path和logging.file作用一样,logging.file多了个可以配置文件名,写一个就行
logging.pattern.level设置日志级别,默认为info, 可以指定某个类为某个级别,如,logging.pattern.level= com.gang.sell.imooc.LoggerTest debug
logback-spring.xml 实例配置:
区分info和error日志
每天产生一个日志文件
缺点:没有提示,需要注意单词拼写
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- //一个配置项,格式配置-->
<!-- //appender表示小配置项-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<!-- //ch.qos.logback.core.ConsoleAppender为logback类路径 ,配置项需要用到此类去处理-->
<!-- //展示配置,因为此处为控制台输出,所以用layout-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
<!-- 具体格式-->
%d - %msg%n
</pattern>
</layout>
</appender>
<!-- Info每天输出日志配置-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--过滤配置,根据范围过滤-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- LevelFilter会过滤掉ERROR级别日志 -->
<level>ERROR</level>
<!--如果匹配则禁止-->
<onMatch>DENY</onMatch>
<!--如果不匹配则接受,NEUTRAL:代表忽略,跳过-->
<onMismatch>ACCEPT</onMismatch>
</filter>
<!-- 编码格式配置,因为此处为文件所以用encoder-->
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!-- 滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--TimeBasedRollingPolicy配置 每天一个日志文件-->
<!-- 路径-->
<fileNamePattern>
/Users/ganggang/Desktop/sell/logtest/info.%d.log
</fileNamePattern>
</rollingPolicy>
</appender>
<!-- error每天输出日志配置-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--过滤配置,根据范围过滤-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- 会打印出ERROR级别以上的日志 -->
<level>ERROR</level>
</filter>
<!-- 编码格式配置,因为此处为文件所以用encoder-->
<encoder>
<pattern>
%msg%n
</pattern>
</encoder>
<!-- 滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--TimeBasedRollingPolicy配置 每天一个日志文件-->
<!-- 路径-->
<fileNamePattern>
/Users/ganggang/Desktop/sell/logtest/error.%d.log
</fileNamePattern>
</rollingPolicy>
</appender>
<!-- //配置项作用域,level为info,表示info级别以上的日志会被输出-->
<root level="info">
<!-- //配置项名-->
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>
网友评论