SpringBoot 整合日志Logback
1. 前言
A. SpringBoot提供了对常用日志的支持,如:Log4J、Log4J2和Logback等,默认使用Logback;
B. Logback是Log4J框架的作者开发的新一代日志框架,这个效率更高;
C. 日志元素内容
时间间隔:yyyy-mm-dd HH:mm:ss.SSS
日志级别:trace < debug < info < warn < error < fatal,如果设置为info,则低于info的信息都不会输出
进程ID
分隔符:---标识实际日志的开始
线程名:方括号括起来
Logger名:通常使用源代码的类名
日志内容
2. pom.xml Maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>
注意:实际开发中不需要直接添加该依赖,因为spring-boot-starter中包含它
3. application.properties方式
A. logging:file;
B. 默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件。
4. 自定义日志方式
A. 根据不同的日志框架,按照规则配置文件名,就能被正确加载,如Logback日志文件logback-spring.xml(官方推荐)或logback.xml,放在src/main/resources下
B. logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!-- configuration包含的三个属性都是默认值 --> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- contextName区分不同应用程序的记录 --> <contextName>default</contextName> <!-- 设置变量,定义的值会被插入到logger上下文中, ${}使用变量 --> <property name="log.path" value="/Users/tengjun/Documents/log" /> <!--输出到控制台--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <!-- %d{HH:mm:ss.SSS}表示日志输出时间, %contextName表示上下文名称, %thread表示线程名, %-5level表示日志级别, 使用5个字符靠左对齐, %logger{36}日志输出者名字, %msg表示日志消息, %n表示换行符 --> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!--输出到文件--> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> <!-- logback为java中的包 --> <logger name="com.dudu.controller"/> <!--logback.LogbackDemo:类的全路径 --> <logger name="com.dudu.controller.LearnController" level="WARN" additivity="false"> <appender-ref ref="console"/> </logger> <!-- logback-spring.xml命名的文件才有 --> <!-- 测试环境+开发环境. 多个使用逗号隔开 --> <springProfile name="test,dev"> <logger name="com.dudu.controller" level="info" /> </springProfile> <!-- 生产环境. --> <springProfile name="prod"> <logger name="com.dudu.controller" level="ERROR" /> </springProfile> </configuration>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗