springboot日志配输出路径配置_SpringBoot日志配置详解

前言

​记录应用系统曰志主要有三个原因 记录操作轨迹、监控系统运行状况、回溯系统故障。记录操作行为及操作轨迹数据,可以数据化地分析用户偏好,有助于优化业务逻辑,为用户提供个性化的服务。例如,通过 access.log 记录用户的操作频度和跳转链接,有助于分析用户的后续行为。

​全面有效的日志系统有助于建立完善的应用监控体系,由此工程师可以实时监控系统运行状况,及时预警,避免故障发生。监控系统运行状况,是指对服务器使用状态,如内存、 CPU 等使用情况,应用运行情况 如响应时间 QPS 等交互状态;应用错误信息,如空指针、 SQL 异常等的监控。例如,在 CPU 使用率大于 60%, 四核服务器中load 大于4时发出报警,提醒工程师及时处理,避免发生故障。

​当系统发生线上问题时,完整的现场日志有助于工程师快速定位问题。例如当系统内存溢出时,如果日志系统记录了问题发生现场的堆信息,就可以通过这个曰志分析是什么对象在大量产生并且没有释放内存,回溯系统故障,从而定位问题。

日志规范

推荐日志文件命名方式

推荐的日志文件命名方式为appName_logType_logName.log 其中 logType为日志类型,推荐分类有 stats monitor visit等, logName 为日志描述。这种命名的好处是通过文件名就可以知道曰志文件属于什么应用,什么类型 ,什么目的,也有利于归类查找。例如, mppserver 应用中单独监控时区转换异常的日志文件名定义为mppserver__monitor_timeZoneConvert.log

推荐曰志文件保存时间

代码规约推荐曰志文件至少保存15天,可以根据日志文件的重要程度、文件大小及磁盘空间再自行延长保存时间。

预先判断曰志级别

对DEBUG 、INFO 级别的日志,必须使用条件输出或者使用占位符的方式打印。该约定综合考虑了程序的运行效率和日志打印需求。例如 在某个配置了打印日志级别为WARN 的应用中,如果针对 DEBUG 级别的日志,仅仅在程序中写出 logger.debug(”Processing trade with id:” + id + ” and symbol:"+ symbol);,那么该日志不会被打印但是会执行字符串拼接操作,如果 symbol 是对象 还会执行 toString() 方法

白白浪费了系统资源。如下示例代码为正确的打印日志方式

//使明条件判断形式

if (logger.isDebugEnabled()) {

logger.debug ("Processing trade with id:" + id + "and symlbol:" + symbol) ;

//使用占位符形式

logger.debug ("Processing trade with id: {} and symbol: {}",id, symbol);

避免无效日志打印

生产环境禁止输出 DEBUG 曰志且有选择地输出 INFO日志。使用 INFO、WARN 级别来记录业务行为信息时,一定要控制日志输出量,以免磁盘空间不足。同时要为曰志文件设置合理的生命周期及时清理过期的日志。避免重复打印,务必在日志配置文件中设置 additivity=false

区别对待错误日志

WARN、ERROR 都是与错误有关的日志级别,但不要一发生错误就笼统地输出ERROR 级别日志。 一些业务异常是可以通过引导重试就能恢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值