统一日志处理
一、本文主要讲解Logback日志
1.1、为什么记录日志?
通过日志查看程序的运行过程,运行信息,异常信息等
1.2、日志级别
# 设置日志级别,ERROR级别以及以上级别的日志输出到控制台上,其他级别将不会输出
logging:
level:
root: ERROR
1.3、创建日志文件
spring boot内部使用Logback作为日志实现的框架。
项目中的resources 中创建 logback-spring.xml (默认日志文件的名字),删除appliaction.yml中刚才设置的日志
<?xml version="1.0" encoding="UTF-8"?> <configuration> </configuration>
1.4、创建测试日志输出,比如在Controller中输出
@ApiOperation("积分等级列表") @GetMapping("/list") public R listAll(){ log.info("hi i'm helen"); log.warn("warning!!!"); log.error("it's a error"); List<IntegralGrade> list = integrationService.list(); return R.ok().data("list", list); }
二、基本说明
2.1、日志配置根节点:configuration
<configuration></configuration>
2.2、contextName
<contextName>是<configuration>的子节点。每个logger都关联到logger上下文,默认上下文名称为“default”。可使用<contextName>设置成其他名字,用于区分不同的应用程序。
<contextName>myProject</contextName>
2.3 property
<!-- 日志的输出目录 --> <property name="log.path" value="D:/project/srb/service_core" /> <!--控制台日志格式:彩色日志--> <!-- magenta:洋红 --> <!-- boldMagenta:粗红--> <!-- cyan:青色 --> <!-- white:白色 --> <!-- magenta:洋红 --> <property name="CONSOLE_LOG_PATTERN" value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/> <!--文件日志格式--> <property name="FILE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" /> <!--编码--> <property name="ENCODING" value="UTF-8" />
2.4 appender
<!-- 控制台日志 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender>
2.4.2 文件日志配置
<!-- 文件日志 --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${log.path}/log.log</file> <append>true</append> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> </appender>
2.5 logger
<!-- 日志记录器 实际使用需要根据不同环境进行设置--> <logger name="com.better" level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </logger>
根据多环境配置 springProfile
在一个基于Spring boot开发的项目里,常常需要有多套环境的配置:开发,测试以及产品。使用springProfile 可以分别配置开发(dev),测试(test)以及生产(prod)等不同的环境
<!-- 开发环境和测试环境 --> <springProfile name="dev,test"> <logger name="com.better" level="INFO"> <appender-ref ref="CONSOLE" /> </logger> </springProfile> <!-- 生产环境 --> <springProfile name="prod"> <logger name="com.
better
" level="ERROR"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </logger> </springProfile>
四、滚动日志
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 要区别于其他的appender中的文件名字 --> <file>${log.path}/log-rolling.log</file> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>${ENCODING}</charset> </encoder> <!-- 设置滚动日志记录的滚动策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志归档路径以及格式 --> <fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.log</fileNamePattern> <!--归档日志文件保留的最大数量--> <maxHistory>15</maxHistory> </rollingPolicy> </appender>
4.2 设置触发滚动时机
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100M</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy>
五、综上,列出完整日志文件logback-spring.xml
其中”日志输出目录“:参考网址:https://www.jb51.net/article/200744.htm
文件相对保存路径设置可分以下三种:
1. value=“logs” – 表示保存到程序运行目录,在tomcat中为bin目录
2. value=“/logs” – 表示保存到系统目录
3. value=“../logs” – 表示保存到程序运行目录的父目录
补充知识:logback-spring.xml中三种相对路径生成的日志文件的位置
logback-spring.xml中关于路径配置的三种写法:
写法1:<property name="log.path" value="logs" />
写法2:<property name="log.path" value="/logs" />
写法3:<property name="log.path" value="../logs" />
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!--scan属性为true时表示配置文件爱你如果发生变更,将会被重新加载;scanPeriod默认单位是毫秒--> 3 <configuration scan="true" scanPeriod="10 seconds"> 4 <contextName>myProject</contextName> 5 6 <!-- 日志的输出目录 保存到程序运行目录的父目录--> 7 <property name="log.path" value="../logs" /> 8 9 <!--控制台日志格式:彩色日志--> 10 <!-- magenta:洋红 --> 11 <!-- boldMagenta:粗红--> 12 <!-- cyan:青色 --> 13 <!-- white:白色 --> 14 <!-- magenta:洋红 --> 15 <property name="CONSOLE_LOG_PATTERN" 16 value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/> 17 18 <!--文件日志格式--> 19 <property name="FILE_LOG_PATTERN" 20 value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" /> 21 22 <!--编码--> 23 <property name="ENCODING" 24 value="UTF-8" /> 25 26 <!-- 控制台日志 --> 27 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 28 <encoder> 29 <pattern>${CONSOLE_LOG_PATTERN}</pattern> 30 <charset>${ENCODING}</charset> 31 </encoder> 32 </appender> 33 34 <!-- 文件日志 --> 35 <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 36 <file>${log.path}/log.log</file> 37 <append>true</append> 38 <encoder> 39 <pattern>${FILE_LOG_PATTERN}</pattern> 40 <charset>${ENCODING}</charset> 41 </encoder> 42 </appender> 43 44 <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 45 46 <!-- 要区别于其他的appender中的文件名字 --> 47 <file>${log.path}/log-rolling.log</file> 48 <encoder> 49 <pattern>${FILE_LOG_PATTERN}</pattern> 50 <charset>${ENCODING}</charset> 51 </encoder> 52 53 54 <!-- 设置滚动日志记录的滚动策略 --> 55 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 56 <!-- 日志归档路径以及格式 --> 57 <fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern> 58 <!--归档日志文件保留的最大数量,次数代表天数--> 59 <maxHistory>15</maxHistory> 60 61 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 62 <maxFileSize>100MB</maxFileSize> 63 </timeBasedFileNamingAndTriggeringPolicy> 64 </rollingPolicy> 65 66 </appender> 67 68 69 70 <!-- 开发环境和测试环境 --> 71 <springProfile name="local,dev,test"> 72 <logger name="com.nari" level="INFO"> 73 <appender-ref ref="CONSOLE" /> 74 </logger> 75 </springProfile> 76 77 <!-- 生产环境 --> 78 <springProfile name="prod"> 79 <logger name="com.nari" level="ERROR"> 80 <appender-ref ref="CONSOLE" /> 81 <appender-ref ref="ROLLING_FILE" /> 82 </logger> 83 </springProfile> 84 </configuration>
posted on 2022-03-01 16:27 betterLearing 阅读(90) 评论(0) 编辑 收藏 举报