spring中加入log4j日志功能 - Go语言中文社区

spring中加入log4j日志功能


spring中加入log4j日志功能

一、java日志记录

在开发过程中做好日志记录是必不可少的一部分。在线上追踪问题,分析业务逻辑快速定位错误原因,精准解决问题必离不开日志。Java中实现这一功能的狂爱很多,目前常用的有Log4j、Log4j2、Commons Logging、Slf4j等等。

二、常用的日志框架简介

1、Log4j:Log4j是Apache的一个开源项目,通过Log4j,可以通过配置文件精细控制日志的生成过程。
2、Log4j2:Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。
3、Commons Logging:Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging。
4、Sl4j:Simple Logging Facade for Java(SLF4J)用作各种日志框架(例如java.util.logging,logback,log4j)的简单外观或抽象,允许最终用户在部署时插入所需的日志记录框架。

三、框架关系

Log4j和Log4j2是包含了日志系统的实现和一套完整的接口。
Commons Logging和Slf4j都是日志门面接口(Logging Façade),在使用过程中,只需要调用对应接口,底层的日志系统实现可以选择Log4j或Java自带的日志类(JUL).

四、在spring中加入log4j日志

1、在pom文件中加入log4j依赖

2、在根目录的配置文件目录底下新建log4j.properties配置文件
在这里插入图片描述在这里插入图片描述
3、编写log4j.properties配置文件,简单模板如下:
在这里插入图片描述
4、记录日志
在这里插入图片描述
5、查看控制台输出结果
在这里插入图片描述

五、log4j配置详解

1、打日志的正确方式(什么时候应该打日志?)

(1)、当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。
(2)、当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支。
(3)、经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程。

2、log4j组件
Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。

3、正确地选择log级别
Log4j建议只使用四个级别,优先级 从低到高分别是:
DEBUG < INFO < WARN < ERROR
可以简单地理解为级别越大越重要。
Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。

(1)、debug
此输出级别用于开发阶段的调试,可以是某几个逻辑关键点的变量值的输出,或者是函数返回值的验证等等。
另外,如果是你写的一些util工具类,在需要加日志的情况下,也可以使用debug。
生产环境需要关闭 DEBUG 信息,如果在生产情况下需要开启 DEBUG ,需要使用开关进行管理,不能一直开启。

(2)、info
此输出级别常用语业务事件信息。例如某项业务处理完毕,或者业务处理过程中的一些信息。
此输出级别也常用于输出一些对系统有比较大的影响的需要被看到的message,例如数据库更新,系统发送了额外的请求等。
主要逻辑中的分步骤。
对于整个系统的提供出的接口(REST/WS),使用 info 记录入参。
调用其他第三方服务时,所有的出参和入参是必须要记录的(因为你很难追溯第三方模块发生的问题)。

(3)、warn
代表存在潜在的错误,或者触发了容易引起错误的操作。程序可以继续运行,但必须多加注意。
例如:有容错机制的时候出现的错误情况;找不到配置文件,但是系统能自动创建配置文件。
即将接近临界值的时候,例如:缓存池占用达到警告线。
业务异常的记录,比如:当接口抛出业务异常时,应该记录此异常。

(4)、error
代表发生了必须马上处理的错误。此类错误出现以后可以允许程序继续运行,但必须马上修正,如果不修正,就会导致不能完成相应的业务。
例如:
打开配置文件失败。
所有第三方对接的异常(包括第三方返回错误码)。
所有影响功能使用的异常,包括: SQLException 和除了业务异常之外的所有异常(RuntimeException和Exception)。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44075963/article/details/103340238
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢