记录springboot项目配置logback日志文件管理:

logback依赖jar包

SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包:

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>

但是因为SpringBoot项目默认就是使用的就是logback日志系统,创建SpringBoot项目时引入的spring-boot-starter或者spring-boot-starter-web依赖jar包中已经包含了spring-boot-starter-logging的依赖,里面同时包含多种日志系统依赖,如下图所示:

包括logback和log4j,所以,无需额外添加依赖,直接配置logback.xml就可以了。

此外,如果需要切换为log4j2,那么需要在spring-boot-starter-web依赖中排除springboot自带的commons‐logging,然后在引入log4j2的依赖jar包,如下所示:

<!--排除 commons‐logging-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>commons‐logging</groupId>
<artifactId>commons‐logging</artifactId>
</exclusion>
</exclusions>
</dependency> <!--引入log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

logback的默认配置

前面说到SpringBoot项目默认使用logback,那么对于logback的配置情况,SpringBoot又是如何定义的呢?

首先,SpringBoot会从resource包下查找logback-test.xmllogback.xml ,如果这两个都不存在,则会调用BasicConfigurator,创建一个最小化的基本配置。

最小化配置由一个关联到根loggerConsoleAppender组成,默认输出模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%nroot logger级别为DEBUG,所以并不会生成日志文件,只会输出到控制台。

创建logback.xml配置文件

通过自定义logback.xml配置文件来控制日志输出情况,通常我们会配置三个日志组件:

  1. 控制台输出
  2. 输出info级别日志文件
  3. 输出error级别日志文件

以下为logback.xml完整配置

<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
<configuration scan="true" scanPeriod="2 seconds">
<!--定义日志文件的存储地址-->
<property name="LOG_PATH" value="./logs" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%-5level:级别从左显示5个字符宽度,%t表示线程名,%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
</encoder>
</appender> <!-- info级别日志文件输出 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 日志文件输出的文件名 -->
<File>${LOG_PATH}/info.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 每日生成日志文件或日志文件大小超出限制后输出的文件名模板 -->
<fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 日志文件保留天数 -->
<maxHistory>30</maxHistory>
<!-- 日志文件最大大小:100MB -->
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
</encoder>
</appender> <!-- error级别日志文件输出 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 日志输出级别,优先级 > '<root level>' -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<File>${LOG_PATH}/error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
</encoder>
</appender> <!-- 默认日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="ERROR_FILE" />
</root> </configuration>

logback配置说明

根节点configuration

<configuration scan="true" scanPeriod="2 seconds" debug="false">

</configuration>

configuration包含以下三个属性:

  • scan:配置文件发生更改时,进行重载,默认值为true
  • scanPeriod:监测配置文件是否有修改的时间间隔,默认值为6000,默认单位为毫秒
  • debug:打印logback内部日志信息,实时查看logback运行状态,默认值为false

子节点property:

<property name="LOG_PATH" value="./logs" />

用来定义变量值,包含以下两个属性

  • name:变量名称
  • value:变量定义的值

通过property定义的值会被插入到logger上下文中,可以使${}来使用变量,这里定义了log的保存位置根目录。

子节点appender:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

</appender>

是负责写日志的组件,通过自定义日志组件控制日志输出的情况,包含以下两个属性:

  • name:组件名称
  • class:组件class指定的类名

不同的class,对应不同的功能:

ch.qos.logback.core.ConsoleAppender会把日志输出到控制台

ch.qos.logback.core.rolling.RollingFileAppender把日志内容输出到指定文件

File节点:日志文件输出的文件名

<File>${LOG_PATH}/info.log</File>

filter节点:过滤器,用来指定日志组件的日志输出级别,优先级高于root节点的level。

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>

rollingPolicy节点:

滚动日志文件配置,涉及日志文件的移动和重命名,只有一个class属性,用来指定滚动策略,这里使用的是ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy

包含以下三个属性:

  • fileNamePattern:发生滚动时的日志命名方式
  • maxHistory:日志文件的最大保留时间,超过设定时间后会自动删除
  • maxFileSize:每份日志文件的最大限制,超出限制后会重新生成,并将旧的日志文件按照fileNamePattern设定的日志命名方式进行命名
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>100MB</maxFileSize>
</rollingPolicy>

子节点encoder

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
</encoder>

对记录事件进行格式化,负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。

PatternLayoutEncoder 是唯一有用的且默认的encoder ,有一个节点,用来设置日志的输入格式。使用“%”加“转换符”方式,如果要输出“%”,则必须用“\”对“%”进行转义。

子节点root

loger,是所有loger的最上级,且只有一个level节点,用类设置打印日志的级别,默认值为debug,通常设置为info,此外还有trace、warn、error、all、off级别。

子节点appender-ref的ref属性指定日志组件名称,即appendername属性值。

使用logback

yml文件中增加logging.config指定配置文件地址,命名为logback时可以不需要配置,SpringBoot`会自动查找。

level设置指定路径下的日志输出级别。

logging:
config: classpath:logback.xml
level:
com:
springboot: debug

如图所示,项目启动后,访问接口输出日志内容并生成指定日志文件:

内容参考

博客园-ryelqy-logback的使用和logback.xml详解

springboot项目配置logback日志系统的更多相关文章

  1. 为项目配置logback日志

    为了保证系统在上线后亦能查看运行的日志,故为系统加入日志. 1:系统引入jar包 slf4j-api.jar logback-classic.jar logback-core.jar logback- ...

  2. 仵航说 SpringBoot项目配置Log日志服务-仵老大

    今天领导让我配置一个log日志服务,我哪里见过哟,然后就去百度了,结果挨个试下去,找到了一个能用的,分享给大家 大致四个地方 分别是 1.pom文件需要引入依赖 2.创建一个TestLog类 3.在y ...

  3. springboot配置logback日志

    springboot配置logback日志 java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj4f 并不是一种日志框架,它相当于定义了规范,实现了这个规范的日 ...

  4. Springboot项目搭配ELK日志平台

    上一篇讲过了elasticsearch和kibana的可视化组合查询,这一篇就来看看大名鼎鼎的ELK日志平台是如何搞定的. elasticsearch负责数据的存储和检索,kibana提供图形界面便于 ...

  5. spring-boot 项目整合logback

    使用spring-boot项目中添加日志输出,java的日志输出一共有两个大的方案log4j/log4j2 ,logback.log4j2算是对log4j的一个升级版本. 常规做法是引入slf4j作为 ...

  6. Springboot项目 配置数据库连接属性后,启动项目报错

    Springboot项目 配置数据库连接属性后,启动项目报错,错误如下: 错误原因分析: 1.连接信息配置错误 当使用properties为配置文件时,如图所示,上面的 spring.datasour ...

  7. SpringBoot入门教程(八)配置logback日志

    Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logback-c ...

  8. spring boot 使用logback日志系统的详细说明

    springboot按照profile进行打印日志 log4j logback slf4j区别? 首先谈到日志,我们可能听过log4j logback slf4j这三个名词,那么它们之间的关系是怎么样 ...

  9. SpringBoot 异步输出 Logback 日志

    一.介绍 1.1 Logback Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它 ...

随机推荐

  1. Windows 常用命令与快捷键

    1.自选区截图Shift+win+s 2.全屏截图Prtsc 3.活动窗口截图Alt+Prtsc 4.新建文件夹Ctrl + Shift + N 5.返回上级目录Alt + 上方向键 6.后退到上一次 ...

  2. git相关问题

    1.git查看远程分支更新到本地 git clone 项目地址,示例如下: git clone https://github.com/zhongyushi-git/vue-test.git 在拉取时, ...

  3. websocket断网消息补发

    注册irealtime 首先去irealtime网站注册一个账号,然后创建一个应用,注册过程请参考获取开发者账号和 appkey 创建页面 <!DOCTYPE html> <html ...

  4. 第6章 for循环

    目标 掌握for循环的使用方法 理解for循环的嵌套 在第3章中,我们学习了times循环.times循环可以让一段代码重复执行指定的次数. 本章我们将学习另一种循环结构--for循环.它同样能让一段 ...

  5. 看完我的笔记不懂也会懂----MarkDown使用指南

    目录 语法 [TOC] 自动生成目录 1. 标题 2. 文本强调 3. 列表 4. 图片 5. 超链接 6. 文本引用 7. 分割线 8. 代码 9. 任务列表 (MPE专属) 10. 表格 11. ...

  6. 看完我的笔记不懂也会懂----javascript模块化

    JavaScript模块化 模块化引子 模块化的历史进化 模块化规范 CommonJS规范 Node.js(服务器端) 下项目的结构分析 browerify(浏览器端) 下项目的结构分析 AMD规范 ...

  7. 力扣541. 反转字符串 II

    原题 1 class Solution: 2 def reverseStr(self, s: str, k: int) -> str: 3 begin,lens,ans = 0,len(s),' ...

  8. Java练习——String类练习

    需求: 给定一个字符串String str=" Hello World",返回长度,返回o第一次出现的索引,返回最后一个o的索引,把所有的l都替换为m,并把字符串str按空格分割为 ...

  9. 选择 FreeBSD 而不是 Linux 的技术性原因2

    ZFSZFS 文件系统是 FreeBSD 上的一等公民.这不仅意味着可以在 ZFS 上安装根目录,安装程序也支持这一点,而且还意味着很多基础系统工具都已经紧密地集成或构建了对 ZFS 的支持.在 Fr ...

  10. Windows系统和Linux系统下安装Mongodb及可视化页面展示

    一.Windows系统安装MongoDB 下载地址: ​ 官方:http://www.mongodb.org/ ​ 其它:http://dl.mongodb.org/dl/win32/x86_64 下 ...