多平台统一管理软件接口,如何实现多平台统一管理软件接口
518
2022-12-29
Spring Boot异步输出Logback日志方法详解
一、介绍
1.1 Logback
Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块:
logback-core:其它两个模块的基础模块
logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging
logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能
1.2 日志级别
包括:TRACE、DEBUG、INFO、WARN 和 ERROR。
1.2.1 TRACE
特别详细的系统运行完成信息,业务代码中,不要使用。(除非有特殊用意,否则请使用DEBUG级别替代)
1.2.2 DEBUG
可以填写所有的想知道的相关信息(但不代表可以随便写,debug信息要有意义,最好有相关参数);
生产环境需要关闭DEBUG信息
如果在生产情况下需要开启DEBUG,需要使用开关进行管理,不能一直开启。
1.2.3 INFO
系统运行信息
Service方法中对于系统/业务状态的变更;
主要逻辑中的分步骤。
外部接口部分
客户端请求参数(REST/WS);
调用第三方时的调用参数和调用结果。
说明
并不是所有的service都进行出入口打点记录,单一、简单service是没有意义的;
对于复杂的业务逻辑,需要进行日志打点,以及埋点记录,比如电商系统中的下订单逻辑,以及OrderAction操作(业务状态变更);
对于整个系统的提供出的接口(REST/WS),使用INFO记录入参;
如果所有的service为SOA架构,那么可以看成是一个外部接口提供方,那么必须记录入参;
调用其他第三方服务时,所有的出参和入参是必须要记录的(因为你很难追溯第三方模块发生的问题)。
1.2.4 WARN
不应该出现但是不影响程序、当前请求正常运行的异常情况:
有容错机制的时候出现的错误情况;
找不到配置文件,但是系统能自动创建配置文件;
即将接近临界值的时候,例如:缓存池占用达到警告线;
业务异常的记录,比如:当接口抛出业务异常时,应该记录此异常。
1.2.5 ERROR
影响到程序正常运行、当前请求正常运行的异常情况:
打开配置文件失败;
所有第三方对接的异常(包括第三方返回错误码);
所有影响功能使用的异常,包括:SQLException和除了业务异常之外的所有异常(RuntimeException和Exception)。
不应该出现的情况:
如果进行了抛出异常操作,请不要记录ERROR日志,由最终处理方进行处理:
反例(不要这么做):
try{
....
}catch(Exception ex){
String errorMessage=String.format("Error while reading information of user [%s]",userName);
logger.error(errorMessage,ex);
throw new UserServiceException(errorMessage,ex);
}
1.3 SpringBoot 中 logback
SpringBoot工程自带logback和slf4j的依赖,所以重点放在编写配置文件上,需要引入什么依赖,日志依赖冲突统统都不需要我们管了;
logback框架会默认加载classpath下命名为logback-spring或logback的配置文件。
将所有日志都存储在一个文件中文件大小也随着应用的运行越来越大并且不好排查问题,正确的做法应该是将ERROR日志和其他日志分开,并且不同级别的日志根据时间段进行记录存储。
二、logback 配置
2.1 配置文件logback-spring.xml示例
项目配置文件中配置日志输出地址
logging:
path: ./logs
2.2 标签说明
name属性指定appender命名
class属性指定输出策略,通常有两种,控制台输出和文件输出,文件输出就是将日志进行一个持久化。ConsoleAppender将日志输出到控制台。
标签指定生成日志保存地址,实现了按天分类以及日志的目标了。
三、 源码
github 示例源码
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~