关键词:
logback的使用
logback是由log4j的创始人设计的另一个开源日志组件,性能比log4j好
LogBack主要分为三个模块:
logback-core:其他两个模块的基础模块
logback-class:它是log4j的改良版本,完整实现了Slf4j API
logback-access:访问模块与servlet容器继承提供通过Http来访问日志的功能
后续代码都是通过Slf4j日志门面搭建日志系统,代码没有区别,主要是通过修改配置文件和pom.xml依赖
Logback入门
<dependencies>
<!--日志门面-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.31</version>
</dependency>
<!--logback日志实现-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- <scope>test</scope>-->
</dependency>
</dependencies>
public class LogBackTest
/**
* 日志记录器对象
*/
private static final Logger LOGGER= LoggerFactory.getLogger(LogBackTest.class);
@Test
public void testQuick() throws Exception
/*默认级别为info*/
LOGGER.info("info");
LOGGER.error("error");
LOGGER.warn("warn");
LOGGER.debug("debug");
LOGGER.trace("trace");
//使用占位符输出日志信息
String name="fei";
Integer age=20;
LOGGER.info("用户信息为--->姓名:,年龄:",name,age);
输出
10:35:06.294 [main] INFO com.xxx.test.LogBackTest - info
10:35:06.297 [main] ERROR com.xxx.test.LogBackTest - error
10:35:06.297 [main] WARN com.xxx.test.LogBackTest - warn
10:35:06.297 [main] DEBUG com.xxx.test.LogBackTest - debug
10:35:06.297 [main] INFO com.xxx.test.LogBackTest - 用户信息为--->姓名:fei,年龄:20
logBack配置文件
logback会依次读取以下配置文件
logback.groovy
logback-test.xml
logback.xml
如果都不存在会采用默认配置
完整日志示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
日志输出格式:
%-5level
%dyyyy-MM-dd HH:mm:ss.SSS日期
%c类的完整名称
%M为method
%L为行号
%thread线程名称
%m或者%msg为信息
%n换行
-->
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度
%msg:日志消息,%n是换行符-->
<property name="pattern" value="%dyyyy-MM-dd HH:mm:ss.SSS %c [%thread]
%-5level %msg%n"/>
<!--
Appender: 设置日志信息的去向,常用的有以下几个
ch.qos.logback.core.ConsoleAppender (控制台)
ch.qos.logback.core.rolling.RollingFileAppender (文件大小到达指定尺
寸的时候产生一个新文件)
ch.qos.logback.core.FileAppender (文件)
-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--输出流对象 默认 System.out 改为 System.err-->
<target>System.err</target>
<!--日志格式配置-->
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$pattern</pattern>
</encoder>
</appender>
<!--
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。
<loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性
name:
用来指定受此logger约束的某一个包或者具体的某一个类。
level:
用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和
OFF,
如果未设置此属性,那么当前logger将会继承上级的级别。
additivity:
是否向上级loger传递打印信息。默认是true。
<logger>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个
logger
-->
<!--
也是<logger>元素,但是它是根logger。默认debug
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL
和 OFF,
<root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个
logger。
-->
<root level="ALL">
<appender-ref ref="console"/>
</root>
</configuration>
我们在Resource下创建logback.xml日志文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--
配置集中管理的属性
直接使用该属性的value value格式":$name
-->
<property name="pattern" value="%dyyyy-MM-dd HH:mm:ss.SSS %c [%thread] %-5level %msg%n"/>
<!--
日志输出格式:
%-5level
%dyyyy-MM-dd HH:mm:ss.SSS日期
%c类的完整名称
%M为method
%L为行号
%thread线程名称
%m或者%msg为信息
%n换行
-->
<!--控制日志输出位置的Appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--控制台输出的对象 默认System.out 改为System.err 就变为了红色字体-->
<target>System.err</target>
<!--日志消息格式的配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$pattern</pattern>
</encoder>
</appender>
<root level="ALL">
<appender-ref ref="console"></appender-ref>
</root>
</configuration>
FileAppender
日志输出到文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--
配置集中管理的属性
直接使用该属性的value value格式":$name
-->
<property name="pattern" value="%dyyyy-MM-dd HH:mm:ss.SSS %c [%thread] %-5level %msg%n"/>
<!-- 日志文件存放目录 -->
<property name="log_dir" value="d:/lianxi"></property>
<!--
日志输出格式:
%-5level
%dyyyy-MM-dd HH:mm:ss.SSS日期
%c类的完整名称
%M为method
%L为行号
%thread线程名称
%m或者%msg为信息
%n换行
-->
<!--控制日志输出位置的Appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--控制台输出的对象 默认System.out 改为System.err 就变为了红色字体-->
<target>System.err</target>
<!--日志消息格式的配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$pattern</pattern>
</encoder>
</appender>
<!--日志文件输出appender对象-->
<appender name="file" class="ch.qos.logback.core.FileAppender">
<!--日志格式配置-->
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$pattern</pattern>
</encoder>
<!--日志输出路径-->
<file>$log_dir/logback.log</file>
</appender>
<root level="ALL">
<appender-ref ref="console"></appender-ref>
<appender-ref ref="file"></appender-ref>
</root>
</configuration>
日志输出到Html
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--
配置集中管理的属性
直接使用该属性的value value格式":$name
-->
<property name="pattern" value="%dyyyy-MM-dd HH:mm:ss.SSS %c [%thread] %-5level %msg%n"/>
<!-- 日志文件存放目录 -->
<property name="log_dir" value="d:/lianxi"></property>
<!--
日志输出格式:
%-5level
%dyyyy-MM-dd HH:mm:ss.SSS日期
%c类的完整名称
%M为method
%L为行号
%thread线程名称
%m或者%msg为信息
%n换行
-->
<!--html格式日志文件输出appender对象-->
<appender name="html" class="ch.qos.logback.core.FileAppender">
<!--html日志格式配置-->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>$pattern</pattern>
</layout>
</encoder>
<!--日志输出路径-->
<file>$log_dir/logback.html</file>
</appender>
<root level="ALL">
<appender-ref ref="html"></appender-ref>
</root>
</configuration>
日志拆分和归档Appender
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--
配置集中管理的属性
直接使用该属性的value value格式":$name
-->
<property name="pattern" value="%dyyyy-MM-dd HH:mm:ss.SSS %c [%thread] %-5level %msg%n"/>
<!-- 日志文件存放目录 -->
<property name="log_dir" value="d:/lianxi"></property>
<!--
日志输出格式:
%-5level
%dyyyy-MM-dd HH:mm:ss.SSS日期
%c类的完整名称
%M为method
%L为行号
%thread线程名称
%m或者%msg为信息
%n换行
-->
<!--控制日志输出位置的Appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--控制台输出的对象 默认System.out 改为System.err 就变为了红色字体-->
<target>System.err</target>
<!--日志消息格式的配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$pattern</pattern>
</encoder>
</appender>
<!--日志拆分和归档Appender-->
<appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志格式配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$pattern</pattern>
</encoder>
<!--日志输出路径-->
<file>$log_dir/roll_logback.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--指定具体实现规则-->
<!--按照时间和压缩格式声明拆分的文件名-->
<!-- <fileNamePattern>$log_dir/rolling.%dyyyy-MM-dd-HH-mm-ss.log%i.gz</fileNamePattern>-->
<fileNamePattern>$log_dir/rolling.%dyyyy-MM-dd-HH.log%i.gz</fileNamePattern>
<!--按照文件大小拆分-->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<root level="ALL">
<appender-ref ref="console"></appender-ref>
<appender-ref ref="rolling"></appender-ref>
</root>
</configuration>
日志级别过滤
只有大于等于设定级别会输出
<appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志格式配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>$pattern</pattern>
</encoder>
<!--日志输出路径-->
<file>$log_dir/roll_logback.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--指定具体实现规则-->
<!--按照时间和压缩格式声明拆分的文件名-->
<!-- <fileNamePattern>$log_dir/rolling.%dyyyy-MM-dd-HH-mm-ss.log%i.gz</fileNamePattern>-->
<fileNamePattern>$log_dir/rolling.%dyyyy-MM-dd-HH.log%i.gz</fileNamePattern>
<!--按照文件大小拆分-->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--日志过滤规则-->
<level>INFO</level>
<!--超过当前级别放行-->
<onMath>ACCEPT</onMath>
<!--小于当前级别拦截-->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
异步日志
我们当前的日志与代码都是使用主线程执行的 记录完日志才会往下执行 所以我们引入了异步日志
<利用springboot+logback手写一个简单的链路追踪(代码片段)
...一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简单的链路追踪,下面详细介绍下。一、实现原理SpringBoot默认使用LogBack日志系统,并且已经引入了相关的jar包,所以我们无需任何配置便可以使用LogBack打... 查看详情
logback的简单使用(代码片段)
logback的使用logback是由log4j的创始人设计的另一个开源日志组件,性能比log4j好LogBack主要分为三个模块:logback-core:其他两个模块的基础模块logback-class:它是log4j的改良版本,完整实现了Slf4jAPIlogback-access:访问模块与... 查看详情
springbootlogback日志组件使用(代码片段)
一logback简介 Logback是一个开源日志组件。Logback一般和SLF4结合起来使用。外层使用SLF4J,里面的实现是logback。什么意思,简单来说我们使用层看到的是SLF4J。我们使用的时候就是和SLF4J提供的一些api打交道。 我们可能... 查看详情
xmlspringboot简单的logback.xml(代码片段)
slfj4+logback(代码片段)
...再代码中或配置文件中指定使用的那个具体的日志系统。logback:是由log4j创始人设计的一个开源日志组件。logback当前分成三个模块:logback-core,logback-classic和logback-access。l 查看详情
logback的简单分析(代码片段)
目录1、根节点包含的属性2、根节点的子节点 2.1、设置上下文名称: 2.2、设置loger、root 正文OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALLlog4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为... 查看详情
logback简单配置记录(代码片段)
<?xmlversion="1.0"encoding="UTF-8"?><!--scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan... 查看详情
logback介绍和配置详解(代码片段)
logback是java的日志开源组件,是log4j创始人写的,性能比log4j要好,目前主要分为3个模块logback-core:核心代码模块logback-classic:log4j的一个改良版本,同时实现了slf4j的接口,这样你如果之后要切换其他日志组件也是一件很容易的事lo... 查看详情
logback-defender实现日志脱敏(代码片段)
Gitee地址https://gitee.com/JustryDeng/logback-defenderlogback-defender介绍 logback-defender是一款基于logback实现的无侵入的日志脱敏工具框架,使用此框架,只需要简单的三步。功能特性(默认提供)支持json脱敏器(默认提供)支持string脱... 查看详情
springbootlogback配置详解(代码片段)
一.了解简单地说,Logback是一个Java领域的日志框架。它被认为是Log4J的继承人。Logback主要由三个模块组成:logback-corelogback-classiclogback-accesslogback-core是其它模块的基础设施,其它模块基于它构建,显然,logback-core提供了一些关键... 查看详情
logback的使用和logback.xml详解,在spring项目中使用log打印日志(代码片段)
logback的使用和logback.xml详解一、logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站:http://logback.qos.ch。它当前分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一... 查看详情
源码详解系列------全面讲解logback的使用和源码(代码片段)
什么是logbacklogback用于日志记录,可以将日志输出到控制台、文件、数据库和邮件等,相比其它所有的日志系统,logback更快并且更小,包含了许多独特并且有用的特性。logback被分成三个不同的模块:logback-core,logback-classic,logba... 查看详情
logback使用以及详细配置(代码片段)
...个切面放到项目里,一个项目的日志记录是非常重要的2.logback提供具有log4j基本的日志服务,同事也具备log4j不具备的功能,比如:日志回滚打包,log4j需要自己写代码去实现3.导入logback需要的jar包这里需要3个包:slf4j-api.jarlogback... 查看详情
logback中%x的使用(代码片段)
1.参考资料https://gist.github.com/logogin/ff44c254f655340b653chttp://www.cnblogs.com/zhudongchang/p/6861375.html2.环境Java:jdk1.8.0_144Logback:1.0.133.%X的使用方法%X用于输出和当前线程相关联的NDC(嵌套诊断环境),在代码中给org.slf4j.MDC添加k 查看详情
slf4j+logback实现日志输出和记录(代码片段)
一、SLF4J SLF4J,即简单日志门面(SimpleLoggingFacadeforJava),不是具体的日志解决方案,它只服务于各种各样的日志系统。在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。 使用... 查看详情
logback的使用和logback.xml详解(代码片段)
一、logback的介绍Logback是由log4j创始人设计的另一个开源日志组件,官方网站:http://logback.qos.ch。它当前分为下面下个模块:logback-core:其它两个模块的基础模块logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4jAPI使你... 查看详情
logback的使用和原理(代码片段)
logback的使用和原理1依赖关系在pom文件中引入springbootstarter依赖,自动引入了这三个依赖,而这三个依赖,就是logback日志框架进行日志操作的。<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>s... 查看详情
springboot使用默认的logback配置logback-spring.xml每天一个日志文件(代码片段)
文章目录logbackapplication.yml配置logback-spring.xml内容部署启动(2)application.yml放在resources下使用logbackspringboot配置每天一个日志文件logback-spring.xmlspringboot工程配置文件可以放在多个地方,可以直接放在resources目录下,也可以放... 查看详情