首页 > 基础资料 博客日记

SpringBoot-日志

2025-08-26 12:00:02基础资料围观29

文章SpringBoot-日志分享给大家,欢迎收藏Java资料网,专注分享技术知识

1. java日志框架发展史

1. 1起源

在jdk1.3时期想要追踪异常大多只能使用System.out.println("error")的方式,这会导致代码中出现大量的打印而且无法记录在文本中。于是

  1. 将错误信息写入txt并保存,这样就可以顺利追踪到异常了
  2. 但随着用户请求量越来越大单个文本达到1-2个G文件将很难打开,于是将日志信息按天迭送例如:xxxx年xx月xx日.log或者按物理大小迭代例如:xxxx年xx月xx日_20M.log
  3. 为能及时追踪异常信息,用户出现异常信息时能不能发送邮件或者短信提醒
  4. 按等级区分日志例如:追踪 信息 调试 异常
  5. 异步执行防止阻塞
  6. 自定义日志格式

这便是日志框架的整体设计思路例如:log4j(开源)、jul(官方)

1. 2日志实现

日志实现 日志门面 实现方式
log4j(性能差,淘汰) JCL 使用类加载器主动寻找有没有日志实现,缺点:当使用自定义类加载器时可能会导致内存溢出。
jul(性能一般,使用方便) SJF4J 使用桥接器将日志实现和日志门面关联,性能更好。适配器将其他日志转换成指定的日志类型,例如将jul或jcl等转换成slf4j。SJF4J官方针对每个日志都提供了对应的适配器,也针对日志实现提供了对应的桥接器。
log4j2(推荐)
logback(推荐,与SJF4J同一作者)

门面不实现日志功能,只是整合日志框架。

  1. 使用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一行信息");//对应不同日志级别
  1. 使用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进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云