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这三个名词,那么它们之间的关系是怎么样 ...
随机推荐
- OI知识点|NOIP考点|省选考点|教程与学习笔记合集
点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分 ...
- day05.1-文件处理
1. 文件处理流程 打开文件,得到文件句柄并赋值给一个变量: 通过句柄对文件进行操作: 关闭文件 with open("filename","r",encodi ...
- “全栈2019”Java第四十八章:重写方法Override
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- PHP程序执行流程
1, PHP文件一定放在服务器的,但是PHP中不同的内容会在不同的地方执行.下图演示了浏览器请求一个php页面的流程. 2,时序图如下所示,在浏览器中输入url后,首先去本机hosts文件中解析ip地 ...
- [ActionScript 3.0] 与C#通信方法fscommand
与C#通信的方法之一 flash.system.fscommand(command:String, args:String=""):void, command 传递给主机应用程序的 ...
- UITabBarController的属性
viewControllers UIViewController的数组,即要显示的VC,数组中VC的顺序即是实际展示的VC的顺序.UITabBarController最多展示5个tab,如果数组中的元 ...
- 针对myeclipse6.5无法自动生成toString方法
public void getToStringSTR(){ Field[] fs = this.getClass().getDeclaredFields(); for (int i = 0; i &l ...
- php 的加法
无意间看到了php中关于加,减,乘,除 的计算方法 这里 http://lxr.php.net/source/xref/PHP-5.6/Zend/zend_operators.h#596 static ...
- Android Fragment实现微信底部导航
1.XML布局 (1)主界面 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout x ...
- Q467 环绕字符串中唯一的子字符串
把字符串 s 看作是"abcdefghijklmnopqrstuvwxyz"的无限环绕字符串,所以 s 看起来是这样的:"...zabcdefghijklmnopqrst ...