首页 > 基础资料 博客日记
SpringBoot-日志
2025-08-26 12:00:02基础资料围观29次
文章SpringBoot-日志分享给大家,欢迎收藏Java资料网,专注分享技术知识
目录
1. java日志框架发展史
1. 1起源
在jdk1.3时期想要追踪异常大多只能使用System.out.println("error")
的方式,这会导致代码中出现大量的打印而且无法记录在文本中。于是
- 将错误信息写入txt并保存,这样就可以顺利追踪到异常了
- 但随着用户请求量越来越大单个文本达到1-2个G文件将很难打开,于是将日志信息按天迭送例如:xxxx年xx月xx日.log或者按物理大小迭代例如:xxxx年xx月xx日_20M.log
- 为能及时追踪异常信息,用户出现异常信息时能不能发送邮件或者短信提醒
- 按等级区分日志例如:追踪 信息 调试 异常
- 异步执行防止阻塞
- 自定义日志格式
这便是日志框架的整体设计思路例如:log4j(开源)、jul(官方)
1. 2日志实现
日志实现 | 日志门面 | 实现方式 |
---|---|---|
log4j(性能差,淘汰) | JCL | 使用类加载器主动寻找有没有日志实现,缺点:当使用自定义类加载器时可能会导致内存溢出。 |
jul(性能一般,使用方便) | SJF4J | 使用桥接器将日志实现和日志门面关联,性能更好。适配器将其他日志转换成指定的日志类型,例如将jul或jcl等转换成slf4j。SJF4J官方针对每个日志都提供了对应的适配器,也针对日志实现提供了对应的桥接器。 |
log4j2(推荐) | ||
logback(推荐,与SJF4J同一作者) |
门面不实现日志功能,只是整合日志框架。
- 使用jul+jcl记录日志
<!--jcl依赖-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
多个日志框架同时存在时,为实现日志统一,将jcl转化到slf4j
<!--添加jcl-slf4j适配器-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
import org.apache.commons.logging.LogFactory;
Log logger = LogFactory.getLog(jul.class);
logger.info("\n一行信息");//对应不同日志级别
- 使用og4j+slf4j记录日志
在使用log4j前需要在resources目录下新增log4j.properties配置文件文件
#ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF
log4j.rootLogger=ALL,file
log4j.appender.file = org.apache.log4j.ConsoleAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
<!--log4j依赖-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--slf4j依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
<!--slf4j-log4j桥接器-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
import org.slf4j.LoggerFactory;
Logger logger = LoggerFactory.getLogger(log4j.class);
logger.info("\nn一行信息");//对应不同日志级别
2. logback日志的集成
SpringBoot已经默认集成了slf4j+logback来实现日志,同时也把其他日志替换成了slf4j
spring官网有详细说明
2.1. 日志级别
logging.level.org.example.springbootcode_logging=trace //修改日志文件等级
<!--trace>debug>info>warn>error-->
import org.slf4j.LoggerFactory;
<!--1、生命日志记录器-->
static Logger logger = LoggerFactory.getLogger(SpringBootCodeLoggingApplication.class);
logger.trace("追踪");
logger.debug("调试");
logger.info("信息");
logger.warn("警告");
logger.error("异常");
2.2. 日志格式
<!--包含日期方法名输出颜色等信息-->
logging.pattern.console=%clr(%d{${LOG DATEFORMAT PATTERN:-yyyy-MM-ddHH:mm:ss.sss}}){faint}%c1r(${LOG LEVEL PATTERN:-%5p})%clr(${PID:-}){magenta} %clr(---){faint}%clr([%15.15t]){faint}%c1r(%-40.40logger{39}){cyan} %clr(:){faint}%m%n${LOG_EXCEPTION CONVERSION WORD:-%wEx}
2.3. 日志文件输出
<!--指定文件夹路径,不可以指定名称,默认文件名spring.log-->
logging.file.path=D:/Project/JavaProject/SpringBootCode_logging/Log
<!--指定文件名称,如果没有设置路径就会创建在项目相对路径下-->
logging.file.name=test.log
2.4. 日志归档
<!--文件超出5kb打打压缩包-->
logging.logback.rollingpolicy.max-file-size=5kb
2.5. 自定义配置文件
Sping只提供了基础的配置选项,想要实现更多更深层的功能就必须要自定义配置,具体怎么做呢
- 在src/main/resources下创建logback-spring.xml文件,注意:文件名不能使用spring.xml,因为spring会在springboot之前读取spring.xml文件会导致logback-spring.xml不生效
- 会使全局配置文件中设置失效
2.6. 日志其他框架切换
- 将logback切换成log4j2
<!--添加Log4j2的场景启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
由于logback默认使用logback-classic桥接器,所以要排除掉默认的场景启动器,否则项目会报错
<!--排除的starter-logging场景启动器,也就是logback的依赖-->
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
添加log4j2配置文件
- 将logback切换成log4j
<!--添加Log4j的场景启动器-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<!--排除的starter-logging场景启动器,也就是logback的依赖-->
<exclusions>
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
</exclusions>
添加log4j配置文件
文章来源:https://www.cnblogs.com/1chen/p/19018794
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- springboot~3.x项目中使用集成测试
- Java测试类、工具类与JavaBean对比解析
- SpringBoot-日志
- springboot~http2的支持
- 解疑释惑 - 日志体系之 slf4j + logback 组合(一)
- Web server failed to start. Port 8080 was already in use. 端口被占用
- Springboot 项目配置多数据源
- 伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 05
- 剑指offer-23、搜索⼆叉树的后序遍历序列
- 一个表示金额的数字是 100000000L,这是多少米?