SpringBoot整合logback的示例代码
作者:张瑞丰 发布时间:2023-08-13 02:32:08
Logback简介
1、logback和log4j是同一个作者,logback可以看作是log4j的升级版
2、logback分为三个模块, logback-core, logback-classic 和logback-access,其中 logback-core是核心,其他两个模块依赖core,这个logback-classic是log4j的改善版本,并且原生实现了SLF4J门面(具体参考前文:Java中SLF4J日志框架的实现原理)。模块logback-access可以集成于Servlet容器,比如Tomact和Jetty。
3、你可以基于logback-core自己创建其他的模块。
Logback相比log4j的优势
比log4j更快,重写了内核,在一些关键路径上性能提升10倍,内存占用也更少。
经过大量的测试,和log4j测试不在一个量级。
logback-classic是SLF4J的实现,切换其他日志框架非常方便,
文档丰富并且不断更新,支持Groovy风格的配置文件
配置文件自动重新加载,如果更新了配置文件,logback-classic可以自动重新加载。
自动删除日期较老的日志文件,maxHistory属性,你可以控制已经产生日志文件的最大数量。如果设置maxHistory为12,那那些log文件超过12个月的都会被自动移除。
自动压缩归档的日志文件,压缩文件是异步进行,不影响应用。
配置文件可以处理不同的环境开发,测试,生产),这样一个配置文件就可以适应多个环境。
SiftingAppender(一个非常多功能的Appender) 它可以用来分割日志文件根据任何一个给定的运行参数。如,SiftingAppender能够区别日志事件跟进用户的Session,然后每个用户会有一个日志文件。
下面看下SpringBoot整合logback的方法。
spring-boot-starter-web这个包几乎是使用SpringBoot时必备的,其内部已经依赖了logback的组件,也就是说SpringBoot已经帮你整合了logback。
只需要在resources目录加上logback.xml文件,写入内容如下:
其中路径、包名称、保留周期等 根据自己的需要进行修改即可
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="./logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<!-- 不匹配时的操作:拒绝(不记录) -->
</appender>
<!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
<!-- 系统模块日志级别控制 -->
<logger name="cn.vantee" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
<!--系统用户操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>
在yml文件中加入如下配置:
logging:
level:
cn.vantee: debug
cn.vantee.mapper: trace
config: classpath:logback.xml
在需要打印日志的类上加入@Slf4j
注解,即可使用log.info()、log.error()、log.debug()...
打印日志。日志会自动记录在logback.xml中指定的文件内
来源:https://www.cnblogs.com/zhangruifeng/p/16112455.html
猜你喜欢
- Spark Streaming算子开发实例transform算子开发transform操作应用在DStream上时,可以用于执行任意的RDD
- 背景java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那
- 这个功能没什么可介绍的,大家都懂,直接上代码了。。实现功能选择多个文件压缩成ZIP文件和解压ZIP文件开发环境开发工具: Visual St
- 一.利用二进制状态法求排列组合,此种方法比较容易懂,但是运行效率不高,小数据排列组合可以使用import java.util.Arrays;
- 一.前言RabbitMQ 是一种快速、灵活、可靠的消息传递方式,可用于构建分布式应用程序、异步处理任务、实现消息队列等。下面是 Java 原
- 场景很多情况下,查单条记录也用通用查询接口,但是输入的条件却能确定唯一性。如果我们要确定list中只有一条记录,如下写法:// 记录不为空
- SimpleDateFormat类:SimpleDateFormat是-一个以与语言环境有关的方式来格式化和解析日期的具体类。进行格式化(日
- 注解定义: 注解是一种注释机制,它可以注释包、类、方法、变量、参数,在编译器生成类文件时,标注可以被嵌入到字节码中。注解的分类:内置注解Ov
- Spark_SQL的UDF使用用户自定义函数,也叫UDF,可以让我们使用Python/Java/Scala注册自定义函数,并在SQL中调用。
- 一般而言,Android 应用在请求数据时都是以 Get 或 Post 等方式向远程服务器发起请求,那你有没有想过其实我们也可以在 Andr
- 由于 Spring 拥有对象的管理权,所以我们也需要拥有较为高效的对象存储和取出的手段,下面我们来分别总结一下:存对象配置文件在存储对象之前
- Java集合的主要分为三种类型:• Set(集)• List(列表)• Map(映射)要深入理解集合首先要了解
- C#的MVC寻找对应的控制器首先是寻找当前域的如果找不到就会寻找备用的..但是有些时候我们是不想他去寻找备用的控制器.这里就涉及到了一个Da
- 在我们开发SpringBoot后端服务时,一般需要给前端统一响应格式,方便前端调试及配置错误提示等等。这篇文章讲讲实际工作中统一响应格式及统
- 前言在最近的一个项目中做了一个涂鸦的效果,手指快速移动,会出现折线,这篇文章记录笔触优化。下面话不多说了,来一起看看详细的介绍吧。优化前优化
- java 单例的五种实现方式及其性能分析序言在23种设计模式中,单例是最简单的设计模式,但是也是很常用的设计模式。从单例的五种实现方式中我们
- Java中四种访问权限总结一、Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private、public、prot
- 环境:springcloud Hoxton.SR11本节主要了解系统中的谓词与配置的路由信息是如何进行初始化关联生成路由对象的。每个谓词工厂
- “读多写少”是大部分项目的一个特点。例如“购物”,总是看的人
- springboot整合mybatis项目博客系统文章,相册,评论,标签,等表IDEA为最新版2021.3.3,mysql数据库为最新版Na