开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):统一日志处理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11296
统一日志处理
内容简介:
一、什么叫日志?
二、配置日志级别
一、什么叫日志?
在控制台做的输出叫日志,通过日志就可以看到当前系统或者程序的运行状态以及更好定位到哪里出了问题
二、、配置日志级别(不同的级别显示的内容是有区别的,它只显示当前级别中的内容)
1.日志记录器(Logger)的行为是分等级的。
如下表所示:
分为: OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL(INFO 包含 WARN 中的内容,DEBUG 包含 OFF、FATAL、ERROR、WARN、INFO 中的内容,越往后包含的东西越多)
(1) 默认情况下,spring boot 从控制台打印出来的日志级别只有 INFO 及以上级别,可以配置日志级别。
(2) 在工程中,默认的级别是 INFO,只显示 INFO 信息,如果想要看到更多的内容,则换成 DEBUG,若要换信息,则需要在配置文件中加配置,也就是设置日志级别: logging. level. root = WARN
2.日志不仅可以输出到控制台,也可以输出到文件中,使用日志工具,
如:log4j、Logback 日志工具
(1)怎样用 Logback 日志工具
第一步:删除 application.properties 日志配置
#设置日志级别
#logging.level.root=INFO
#mybatis 日志
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutlmpl
第二步:在 resources 中创建 logback-spring.xml
< ! -- 生产环境:输出到文件 -- >
<springProfile name= "pro" >
root level=" INFO" >
<appender-ref ref= "CONSOLE" />
<appender-ref ref= "DEBUG_FILE" />
<appender-ref ref= "INFO_ FILE" />
<appender-ref ref= "ERROR_FILE" />
<appender-ref ref= "WARN_FILE" />
</root>
</springProfile>
<configuration>
文件中的内容:
<property name = "log.path" value = "D:/guli_1010/edu" />
→ 把日志输出到文件中,文件在D盘的guli中,设置日志输出的路径
日志的格式:
value = "%yellow (%date {yyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue (%thread)
输出到文件:
< !-- 时间滚动输出 leve1为 INFO 日志 -- >
<appender name= "INFO_FILE" class= 'ch.qos.logback.core.rolling. RollingFileAppender" >
< !-- 正在记录的日志文件的路径及文件名 -- >
<file>${log. path}/log_info.log</file>
< !-- 日志文件输出格式 -- >
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thpread] %-5level %logser{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
< !-- 日志记录器的滚动策略,按日期,按大小记录 -- >
<rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" >
< !-- 每天日志归档路径以及格式 -- >
<fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" >
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
< !-- 日志文件保留天数 -- >
<maxHistory)15</maxHistory>
</rollingPolicy>
< !-- 此日志文件只记录 info 级别的 -- >
<filter class = "ch.qos.logback.classic.filter.LevelFilter" >
<level>INF0</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch)
</filter>
</appender>
< !-- 开发环境:打印控制台 -- >
<springProfile name = "dev" >
< !-- 可以输出项目中的 debug 日志,包括 mybatis 的 sq1日志 -- >
<logger name = "com. guli" level= "INFO" />
< !--
root 节点是必选节点,用来指定最基础的日志输出级别,只有一个 leve1属性
level:
用来设置打印级别,大小写无关:
TRACE,DEBUG,INFO,WARN,ERROR, ALL 和 0FF,默认是 DEBUG 可以包含零个或多个 appender 元素。
-- >
<root level=" INFO" >
<appender-ref ref= "CONSOLE" />
<appender-ref ref= "DEBUG_FILE" />
<appender-ref ref= "INFO_ FILE" />
<appender-ref ref= "ERROR_FILE" />
<appender-ref ref= "WARN_FILE" />
</root>
</springProfile>
< ! -- 生产环境:输出到文件 -- >
<springProfile name= "pro" >
<root level=" INFO" >
<appender-ref ref= "CONSOLE" />
<appender-ref ref= "DEBUG_FILE" />
<appender-ref ref= "INFO_ FILE" />
<appender-ref ref= "ERROR_FILE" />
<appender-ref ref= "WARN_FILE" />
</root>
</springProfile>
<configuration>
3.如果程序运行出现异常,把异常信息输出到文件中
在类上加注解
@Slf4j
public class GlobalExceptionHandler {
//自定义异常
@ExceptionHandler(GuliException.class)
@ResponseBody
//为了返回数据
public R error(GuliException e) {
log. error(e.getMessage()) :
e.printStackTrace():
执行,打开 swagger,
点击/eduserice/teacher/pageTeacher/{current}/{limit}
current : 1
limit : 2
点击 try it out!
结果:
{
"suecess": false,
"code": 20001 ,
"message": "执行了自定义异常处理....",
"data": ()
}