gradle 构建的 Spring Boot 使用 logback
文章讲的是配置和使用,入门请看文档先。
what
目的: 可以实现log不同级别的日志记录,例如info 在一个文件夹内,另一个级别的在另一个文件夹内。
how
配置依赖项
1 //log
2 compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
3 compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
编写配置文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--<configuration scan="true" scanPeriod="60 seconds" >-->
3 <configuration >
4
5 <!--<!– 动态日志级别 –>-->
6 <!--<jmxConfigurator/>-->
7 <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
8 <property name="LOG_HOME" value="D:\Log"/>
9 <property name="log.level" value="debug"/>
10 <property name="log.maxHistory" value="30"/>
11
12 <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
13 <encoder>
14 <pattern>%black(Console ) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) %cyan(%message%n)
15 </pattern>
16 </encoder>
17 </appender>
18
19
20 <!-- ERROR级别日志 -->
21 <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
22 <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
23 <!-- 过滤器,只记录WARN级别的日志 -->
24 <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
25 <filter class="ch.qos.logback.classic.filter.LevelFilter">
26 <!-- 设置过滤级别 -->
27 <level>ERROR</level>
28 <!-- 用于配置符合过滤条件的操作 -->
29 <onMatch>ACCEPT</onMatch>
30 <!-- 用于配置不符合过滤条件的操作 -->
31 <onMismatch>DENY</onMismatch>
32 </filter>
33 <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责触发滚动 -->
34 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
35 <!--日志输出位置 可以是相对和绝对路径 -->
36 <fileNamePattern>
37 ${LOG_HOME}/error/%d{yyyy-MM-dd}/%i.log
38 </fileNamePattern>
39 <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
40 <maxHistory>${log.maxHistory}</maxHistory>
41 <TimeBasedFileNamingAndTriggeringPolicy
42 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
43 <!-- 单个log文件超过该大小就会重新建一个log文件-/> -->
44 <MaxFileSize>2MB</MaxFileSize>
45 </TimeBasedFileNamingAndTriggeringPolicy>
46 </rollingPolicy>
47 <encoder>
48 <pattern>
49 <!-- 设置日志输出格式 -->
50 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
51 </pattern>
52 </encoder>
53 </appender>
54
55
56 <!-- WARN级别日志 appender -->
57 <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
58 <!-- 过滤器,只记录WARN级别的日志 -->
59 <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
60 <filter class="ch.qos.logback.classic.filter.LevelFilter">
61 <!-- 设置过滤级别 -->
62 <level>WARN</level>
63 <!-- 用于配置符合过滤条件的操作 -->
64 <onMatch>ACCEPT</onMatch>
65 <!-- 用于配置不符合过滤条件的操作 -->
66 <onMismatch>DENY</onMismatch>
67 </filter>
68 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
69 <!--日志输出位置 可相对、和绝对路径 -->
70 <fileNamePattern>${LOG_HOME}/warn/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
71 <maxHistory>${log.maxHistory}</maxHistory>
72 <TimeBasedFileNamingAndTriggeringPolicy
73 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
74 <MaxFileSize>2MB</MaxFileSize>
75 </TimeBasedFileNamingAndTriggeringPolicy>
76 </rollingPolicy>
77 <encoder>
78 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
79 </encoder>
80 </appender>
81
82
83 <!-- INFO级别日志 appender -->
84 <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
85 <filter class="ch.qos.logback.classic.filter.LevelFilter">
86 <level>INFO</level>
87 <onMatch>ACCEPT</onMatch>
88 <onMismatch>DENY</onMismatch>
89 </filter>
90 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
91 <fileNamePattern>${LOG_HOME}/info/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
92 <maxHistory>${log.maxHistory}</maxHistory>
93 <TimeBasedFileNamingAndTriggeringPolicy
94 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
95 <MaxFileSize>2MB</MaxFileSize>
96 </TimeBasedFileNamingAndTriggeringPolicy>
97 </rollingPolicy>
98 <encoder>
99 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
100 </encoder>
101 </appender>
102
103
104 <!-- DEBUG级别日志 appender -->
105 <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
106 <filter class="ch.qos.logback.classic.filter.LevelFilter">
107 <level>DEBUG</level>
108 <onMatch>ACCEPT</onMatch>
109 <onMismatch>DENY</onMismatch>
110 </filter>
111 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
112 <fileNamePattern>${LOG_HOME}/debug/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
113 <maxHistory>${log.maxHistory}</maxHistory>
114 <TimeBasedFileNamingAndTriggeringPolicy
115 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
116 <MaxFileSize>2MB</MaxFileSize>
117 </TimeBasedFileNamingAndTriggeringPolicy>
118 </rollingPolicy>
119 <encoder>
120 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
121 </encoder>
122 </appender>
123
124
125 <!-- TRACE级别日志 appender -->
126 <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
127 <filter class="ch.qos.logback.classic.filter.LevelFilter">
128 <level>TRACE</level>
129 <onMatch>ACCEPT</onMatch>
130 <onMismatch>DENY</onMismatch>
131 </filter>
132 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
133 <fileNamePattern>${LOG_HOME}/trace/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
134 <maxHistory>${log.maxHistory}</maxHistory>
135 <TimeBasedFileNamingAndTriggeringPolicy
136 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
137 <MaxFileSize>2MB</MaxFileSize>
138 </TimeBasedFileNamingAndTriggeringPolicy>
139 </rollingPolicy>
140 <encoder>
141 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
142 </encoder>
143 </appender>
144 <!--//原文:https://blog.csdn.net/zzzgd_666/article/details/80458444-->
145
146
147 <!--日志输出级别-->
148 <!--级别:-->
149 <!--trace-debug-info-warn-error-fetal-->
150 <!-- root级别 DEBUG -->
151 <root>
152 <!-- 打印debug级别日志及以上级别日志 -->
153 <level value="${log.level}"/>
154 <!-- 控制台输出 -->
155 <appender-ref ref="console"/>
156 <!-- 文件输出 -->
157 <appender-ref ref="ERROR"/>
158 <appender-ref ref="INFO"/>
159 <appender-ref ref="WARN"/>
160 <appender-ref ref="DEBUG"/>
161 <appender-ref ref="TRACE"/>
162 </root>
163
164 </configuration>
appender 代表的是日志记录器,表示使用何种方式来记录日志, 上面有两个,一种是 console 控制台方式的,一个是以滚动文件的形式来记录文件。
当记录的文件超过一定大小时就会创建新的文件,filter 就是过滤器,会过滤某一种级别的日志。root 元素类有个level 的子元素指定要记录何种级别的日志。
使用
1 public class LogUtil {
2 public static Logger getLogger(Class class1){
3 Logger logger = LoggerFactory.getLogger(class1);
4 return logger;
5 }
6
7 }
8
gradle 构建的 Spring Boot 使用 logback的更多相关文章
- 微服务构建: Spring Boot
在展开 Spring Cloud 的微服务架构部署之前, 我们先了解一下用于构建微服务的基础框架-Spring Boot. 由于 Spring Cloud 的构建基于 Spring Boot 实现, ...
- spring boot 中logback多环境配置
spring boot 配置logback spring boot自带了log打印功能,使用的是Commons logging 具体可以参考spring boot log 因此,我们只需要在resou ...
- 第二章 微服务构建:Spring Boot
此处介绍Spring Boot的目的除了它是Spring Cloud的基础外,也由于其自身的各项优点,如自动化配置.快速开发.轻松部署等,非常适合用作微服务架构中各项具体微服务的开发框架. 本章内容: ...
- 剑指架构师系列-spring boot的logback日志记录
Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...
- Spring Boot之logback日志最佳实践
一.Spring Boot日志介绍 Spring Boot对所有内部日志记录使用了Commons Logging,但是底层日志实现是开放的.为Java Util日志记录.Log4J2和Logback提 ...
- Spring Boot与Logback的运用(自定义异常+AOP)
在开发以及调试过程中,程序员对日志的需求是非常大的,出了什么问题,都要通过日志去进行排查,但是如果日志不清或者杂乱无章,则不利于维护 这边就比较详细的列举几种类型的日志,供大家参考 首先明白logba ...
- 基于Spring Boot的Logback日志轮转配置
在生产环境下,日志是最好的问题调试和跟踪方法,因此日志的地位是十分重要的.我们平时经常使用的log4j,slf4j,logback等等,他们的配置上大同小异.这里就结合Spring Boot配置一下L ...
- spring boot(13)-logback和access日志
logback logback出自log4j的作者,性能和功能相比log4j作出了一些改进,而配置方法和log4j类似,是spring boot的默认日志组件.在application.propert ...
- spring boot 使用logback日志系统的详细说明
springboot按照profile进行打印日志 log4j logback slf4j区别? 首先谈到日志,我们可能听过log4j logback slf4j这三个名词,那么它们之间的关系是怎么样 ...
随机推荐
- linux命令之网络管理命令(上)
1.ifconfig:配置或显示网络接口信息 该命令用于配置网卡IP地址等网络参数或显示当前网络的接口状态,该命令配置网卡信息时必须要以root用户的身份来执行. 参数选项 说明 up 激活指定的网络 ...
- “全栈2019”Java第七十一章:外部类访问静态内部类成员详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- leecode刷题(9)-- 有效的数独
leecode刷题(9)-- 有效的数独 有效的数独 描述: 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 ...
- [Flex] 组件Tree系列 —— 支持元素的拖放排序
mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述:支持元素拖放排序--> &l ...
- 「案例」重新设计 Adobe 的文件类型图标
Adobe 的品牌设计团队负责为公司旗下桌面端.移动端和 web 端的产品进行品牌设计.品牌元素的形式很多,可以是两个字母的产品 logo,应用启动界面,产品里的图标等等. 一个很常见却常被忽视的品牌 ...
- iOS开发之动画中的时间(概况)
一.引言 在iOS开发中使用动画时,可以通过设置动画的duration.speed.begintime.offset属性,来设置动画的时长.速度.起始时间及起始偏移. 用一个简单的例子来说明各个参数的 ...
- P5283 [十二省联考2019]异或粽子 可持久化01Trie+线段树
$ \color{#0066ff}{ 题目描述 }$ 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 \(n\) 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 ...
- Mongo限制规则
文章翻译自来源:http://docs.mongodb.org/manual/reference/limits/#limit-bson-document-size 一.BSON 文档 1.BSON文档 ...
- 1、Caffe数据层及参数
要运行Caffe,需要先创建一个模型(model),每个模型由许多个层(layer)组成,每个层又都有自己的参数, 而网络模型和参数配置的文件分别是:caffe.prototxt,caffe.solv ...
- 修改node.js默认的npm安装目录
转自https://blog.csdn.net/baijinwen/article/details/77961746 默认的安装路径:C:/用户/[用户名]/AppData/Roming/npm/no ...