统一日志处理 | 学习笔记

简介: 快速学习 统一日志处理

开发者学堂课程【微服务+全栈在线教育实战项目演练(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": ()

}

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
监控
计算机网络的拓扑结构
计算机网络的拓扑结构。
1462 0
|
网络协议 Windows
网络连接正常但百度网页打不开显示无法访问此网站解决方案
网络连接正常但百度网页打不开显示无法访问此网站解决方案
3423 0
网络连接正常但百度网页打不开显示无法访问此网站解决方案
|
8月前
|
人工智能 中间件 程序员
大模型上下文协议 MCP 带来了哪些货币化机会
本文探讨了MCP(Model-Calling Protocol)的兴起及其对AI生态的影响。自2月中旬起,MCP热度显著提升,GitHub Star和搜索指数均呈现加速增长趋势。MCP通过标准化协议连接大模型与外部工具,解决了碎片化集成问题,推动AI应用货币化及生态繁荣。文章分析了MCP与Function Calling的区别,指出MCP更适用于跨平台、标准化场景,而Function Calling在特定实时任务中仍具优势。此外,MCP促进了 supply端(如云厂商、大模型、中间件服务商)和消费端(终端用户)的变革,尤其以Devin和Manus为代表,分别改变了程序员和普通用户的交互方式。
1023 37
大模型上下文协议 MCP 带来了哪些货币化机会
|
机器学习/深度学习 人工智能 自然语言处理
讯飞星火大模型:AI语言模型的巅峰之作
今年,我们不得不提的一个热门话题就是ChatGPT,这是一款基于语言模型的人机对话系统。它在工作和生活中给我们带来了极大的便利。作为一名从事IT行业的人,我深切体会到了它在技术和文本处理方面的重要性。
744 0
讯飞星火大模型:AI语言模型的巅峰之作
|
12月前
|
Linux 程序员 开发工具
OpenHarmony开发板环境搭建
本文详细介绍如何在Windows、Linux搭建OpenHarmony开发环境,包括安装VSCode、DevEco Device Tool及相关插件,帮助开发者快速上手OpenHarmony开发。君志所向,一往无前!
461 65
|
存储 SQL 安全
网络安全的屏障与钥匙:漏洞防御与加密技术解析
【10月更文挑战第42天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业数据不被侵犯的关键防线。本文将深入探讨网络安全中的两大核心议题——漏洞防御和加密技术。我们将从网络漏洞的识别开始,逐步揭示如何通过有效的安全策略和技术手段来防范潜在的网络攻击。随后,文章将转向加密技术的奥秘,解读其在数据传输和存储过程中保护信息安全的作用机制。最后,强调提升个人和企业的安全意识,是构建坚固网络安全屏障的重要一环。
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
465 4
|
运维 监控 安全
多云环境下的Docker部署策略
随着云计算的快速发展,多云环境(Multi-Cloud Environment)已经成为了现代应用部署的一种重要选择。在这种环境下,企业可以利用多个云服务提供商的资源来提高可用性、灵活性和容错性。Docker容器技术在多云环境中的应用变得越来越普遍,本文将探讨多云环境下的Docker部署策略,并提供丰富的示例代码,以帮助大家更好地管理和运维容器化应用。
|
域名解析 Kubernetes 负载均衡
在K8S中,外部访问容器服务,比如说提供了一个域名,链路怎么走?数据经过哪些组件?
在K8S中,外部访问容器服务,比如说提供了一个域名,链路怎么走?数据经过哪些组件?
|
运维 容灾 算法
Docker Swarm 节点维护
Docker Swarm 节点维护