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这三个名词,那么它们之间的关系是怎么样 ...
随机推荐
- mysqldump导出数据不带时区信息的问题
今天在导出数据时,发现所有timestamp字段都不带时区信息,因为我在东8区,导出的数据中所有时间都提早了8个小时 首先先看表的字段和数据 CREATE TABLE IF NOT EXISTS `a ...
- mycat 1.6.6.1 distinct报错问题
以前在mysql5.7上执行如下sql语句没有问题 SELECT DISTINCT u.*,c.content userCategory FROM m_user u LEFT JOIN m_categ ...
- iOS 本地时间、UTC时间、时间戳等操作、获取当前年月日
//获得当前时间并且转为字符串 - (NSString *)dateTransformToTimeString { NSDate *currentDate = [NSDate date];//获得当前 ...
- 2016级算法第二次上机-A.画个圈圈诅咒你
890 画个圈圈诅咒你 思路 简单题.题目中的圆并没有什么实际作用,简化成线段重合问题会更好理解些. 暴力解法:使用双重for循环会T到想哭,记住最直接的方法一般是过不了题的. 解法一:二分查找.空间 ...
- docker搭建tomcat环境
1.拉取镜像 docker pull tomcat 2.运行容器 docker run --name tomcat -p : -v /data/tomcat/test:/usr/local/tomca ...
- (STM32F4) SysTick理解使用
關於Cortex System Timer (Systick) 網上隨便google就可以找到許多相關範例. 他就是ARM提供的一個24-bit的下數(count-down)計時器我看大部分應用都是提 ...
- mysql 存储过程和游标
CREATE DEFINER=`root`@`localhost` PROCEDURE `NewProc`() BEGIN #Routine body goes here... DECLARE ite ...
- JQuery.Validate学习笔记
JQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证 ...
- [JSOI2018]机器人
[Luogu4558] [LOJ2550] \(19.3.25\) JSOI2018简要题解 - FallDream 规律就是 对于\(n=m\)我们每一条左下到右上的对角线上的点的走法都是一样的且每 ...
- ONTAK2010 Peaks加强版(离线&在线)
题面 弱化版:luogu 强制在线版:bzoj 题解 本题有两种解法 离线算法:线段树合并 先看一道简单题[USACO18JAN]MooTube 本题就是在此基础上求第\(k\)高的点 首先把询问和路 ...