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>
复制代码

 

可参考:SpringBoot默认日志logback配置解析

posted @   如幻行云  阅读(259)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示