springboot中logback日志配置

springboot中logback日志配置

前言

Spring Boot使用Apache的Commons Logging作为内部的日志框架,其仅仅是一个日志接口,在实际应用中需要为该接口来指定相应的日志实现。

Spring Boot从1.4版本开始内置的日志框架就是Logback;Spring Boot 2.x 默认采用了slf4j+logback的形式,slf4j也是个通用的日志门面。

SpringBoot可以适配所有日志,其底层使用slf4j+logback的方式记录日志。

默认配置

默认情况下 SpringBoot 将日志输出到控制台,不会写到日志文件。

如果要编写除控制台输出之外的日志文件,则需在 application.properties 中设置 logging.file 或 logging.path 属性。

注:二者不能同时使用,如若同时使用,则只有 logging.file 生效。

logging.file=文件名(设置文件,可以是绝对路径,也可以是相对路径。例:logging.file=my.log)

logging.path=日志文件路径(设置目录,会在该目录下创建spring.log文件,并写入日志内容。例:logging.path=/var/log)

logging.level.包名=指定包下的日志级别

logging.pattern.console=日志打印规则

可以看到这种方式配置简单,但是能实现的功能也非常有限,如果想要更复杂的需求,就需要下面的定制化配置了。

logback-spring.xml详细配置

默认配置

默认情况下 SpringBoot 将日志输出到控制台,不会写到日志文件。

如果要编写除控制台输出之外的日志文件,则需在 application.properties 中设置 logging.file 或 logging.path 属性。

注:二者不能同时使用,如若同时使用,则只有 logging.file 生效。

logging.file=文件名(设置文件,可以是绝对路径,也可以是相对路径。例:logging.file=my.log)

logging.path=日志文件路径(设置目录,会在该目录下创建spring.log文件,并写入日志内容。例:logging.path=/var/log)

logging.level.包名=指定包下的日志级别

logging.pattern.console=日志打印规则

可以看到这种方式配置简单,但是能实现的功能也非常有限,如果想要更复杂的需求,就需要下面的定制化配置了。

xml 复制代码
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!--引入默认logback默认配置-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!--自定义打印格式-->
    <!--配置打印MDC %clr([%X{ip}]){faint} -->
    <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss}}){faint}  %clr([%X{ip}]){faint}  %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>

    <!--控制台打印-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${CONSOLE_LOG_CHARSET}</charset>
        </encoder>
    </appender>
    <!--配置文件打印-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${FILE_LOG_CHARSET}</charset>
        </encoder>
        <!--配置文件滚动策略,防止文件无限变大-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--文件保存位置及命名规则-->
            <FileNamePattern>log/%d{yyyy-MM-dd}-spring-%i.log</FileNamePattern>
            <!--到期自动清理日志文件-->
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
            <!--最大保留时间-->
            <maxHistory>7</maxHistory>
            <!--单个文件大小-->
            <maxFileSize>10MB</maxFileSize>
        </rollingPolicy>
    </appender>

      <root level="INFO">
          <appender-ref ref="CONSOLE"/>
          <appender-ref ref="FILE"/>
      </root>
</configuration>
相关推荐
冷琴19961 小时前
基于java+springboot的酒店预定网站、酒店客房管理系统
java·开发语言·spring boot
九圣残炎2 小时前
【springboot】简易模块化开发项目整合Redis
spring boot·redis·后端
.生产的驴2 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
爱学的小涛2 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
爱学的小涛2 小时前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio
北极无雪2 小时前
Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
java·开发语言·后端·学习·spring
琴智冰3 小时前
SpringBoot
java·数据库·spring boot
爱码少年3 小时前
springboot工程中使用tcp协议
spring boot·后端·tcp/ip
《源码好优多》3 小时前
基于SpringBoot+Vue+Uniapp的植物园管理小程序系统(2024最新,源码+文档+远程部署+讲解视频等)
vue.js·spring boot·uni-app
计算机学姐3 小时前
基于微信小程序的调查问卷管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis