springboot项目配置logback日志系统
记录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.xml
或logback.xml
,如果这两个都不存在,则会调用BasicConfigurator
,创建一个最小化的基本配置。
最小化配置由一个关联到根logger
的ConsoleAppender
组成,默认输出模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
,root logger
级别为DEBUG
,所以并不会生成日志文件,只会输出到控制台。
创建logback.xml配置文件
通过自定义logback.xml
配置文件来控制日志输出情况,通常我们会配置三个日志组件:
- 控制台输出
- 输出info级别日志文件
- 输出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
属性指定日志组件名称,即appender
的name
属性值。
使用logback
在yml
文件中增加logging.config
指定配置文件地址,命名为logback时可以不需要配置,
SpringBoot`会自动查找。
level
设置指定路径下的日志输出级别。
logging:
config: classpath:logback.xml
level:
com:
springboot: debug
如图所示,项目启动后,访问接口输出日志内容并生成指定日志文件:
内容参考
博客园-ryelqy-logback的使用和logback.xml详解
springboot项目配置logback日志系统的更多相关文章
- 为项目配置logback日志
为了保证系统在上线后亦能查看运行的日志,故为系统加入日志. 1:系统引入jar包 slf4j-api.jar logback-classic.jar logback-core.jar logback- ...
- 仵航说 SpringBoot项目配置Log日志服务-仵老大
今天领导让我配置一个log日志服务,我哪里见过哟,然后就去百度了,结果挨个试下去,找到了一个能用的,分享给大家 大致四个地方 分别是 1.pom文件需要引入依赖 2.创建一个TestLog类 3.在y ...
- springboot配置logback日志
springboot配置logback日志 java web 下有好几种日志框架,比如:logback,log4j,log4j2(slj4f 并不是一种日志框架,它相当于定义了规范,实现了这个规范的日 ...
- Springboot项目搭配ELK日志平台
上一篇讲过了elasticsearch和kibana的可视化组合查询,这一篇就来看看大名鼎鼎的ELK日志平台是如何搞定的. elasticsearch负责数据的存储和检索,kibana提供图形界面便于 ...
- spring-boot 项目整合logback
使用spring-boot项目中添加日志输出,java的日志输出一共有两个大的方案log4j/log4j2 ,logback.log4j2算是对log4j的一个升级版本. 常规做法是引入slf4j作为 ...
- Springboot项目 配置数据库连接属性后,启动项目报错
Springboot项目 配置数据库连接属性后,启动项目报错,错误如下: 错误原因分析: 1.连接信息配置错误 当使用properties为配置文件时,如图所示,上面的 spring.datasour ...
- SpringBoot入门教程(八)配置logback日志
Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logback-c ...
- spring boot 使用logback日志系统的详细说明
springboot按照profile进行打印日志 log4j logback slf4j区别? 首先谈到日志,我们可能听过log4j logback slf4j这三个名词,那么它们之间的关系是怎么样 ...
- SpringBoot 异步输出 Logback 日志
一.介绍 1.1 Logback Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块: logback-core:其它两个模块的基础模块 logback-classic:它 ...
随机推荐
- 你真的知道typeof null的结果为什么是‘object‘吗?
到目前为止,ECMAScript 标准中定义了8种数据类型,它们分别是Undefined.Null.Number.Boolean.String.Symbol.BigInt.Object. 为了判断变量 ...
- Python爬虫_百度贴吧(title、url、image_url)
本爬虫以百度贴吧为例,爬取某个贴吧的[所有发言]以及对应发言详情中的[图片链接] 涉及: request 发送请求获取响应 html 取消注释 通过xpath提取数据 数据保存 思路: 由于各贴吧发言 ...
- (十) 数据库查询处理之排序(sorting)
1. 为什么我们需要对数据排序 可以支持对于重复元素的清除(支持DISTINCT) 可以支持GROUP BY 操作 对于关系运算中的一些运算能够得到高效的实现 2. 引入外部排序算法 对于不能全部放在 ...
- FreeRTOS操作系统最全面使用指南
FreeRTOS操作系统最全面使用指南 1 FreeRTOS操作系统功能 作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理.时间管理.信号量.消息队列.内存管理.记录功能等,可基本满 ...
- 完全基于node的web应用
完全基于node的web应用 node js web fs fs文件路径 事实上通常"正确的方式"一般都不简单. 用例 模块 基本http服务器 基于事件驱动回调 模块化serve ...
- Docker 一次性进程与对话进程
目录 一次性进程 对话进程 退出的方法 参考 Docker在运行程序的时候,需要区分运行的程序是一次性进程还是对话进程,不同的进程操作方式有差异. 一次性进程 一些简单进程是不需要交互的,比如hell ...
- 微信小程序左滑删除
<view class="touch-item {{item.isTouchMove ? 'touch-move-active' : ''}}" data-index=&qu ...
- CVE-2019-20372-Nginx error_page 请求走私
一.漏洞简介 Nginx 1.17.7之前版本中 error_page 存在安全漏洞.攻击者可利用该漏洞读取未授权的Web页面. 二.漏洞影响 Ngnix < 1.17.7 三.复现过程 错误代 ...
- windows10 缺失 msvcp140.dll 解决办法
1.问题描述 我更新完windows10 驱动后,出现计算机缺失msvcp140.dll文件,虚机和QQ都无法启动 2.解决办法 查找大量文章,最终发现通过重新安装 Visual Studio 201 ...
- 关于ORACLE数据库跨库调用序列的解决办法
问题 ORACLE 数据库 用户1 xscg 有序列 seq_S_ATTACHMENT_INFO.nextval 我要在 用户2 xsds 里面调用 ...