Java开发手册之日志规约[通俗易懂]

Java开发手册之日志规约[通俗易懂]Java开发手册之日志规约

大家好,又见面了,我是你们的朋友全栈君。

  1. 【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架
    SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory; 
 private static final Logger logger = LoggerFactory.getLogger(Abc.class);  
  1. 【强制】日志文件推荐至少保存15天,因为有些异常具备以“周”为频次发生的特点。
  2. 【强制】应用中的扩展日志(如打点、临时监控、访问日志等)命名方式:
    appName_logType_logName.log。logType:日志类型,推荐分类有stats/desc/monitor/visit等;
    logName:日志描述。这种命名的好处:通过文件名就可知道日志文件属于什么应用,什么类型,什么目的,也有利于归类查找。
    正例:mppserver应用中单独监控时区转换异常,如:
    mppserver_monitor_timeZoneConvert.log 

说明:推荐对日志进行分类,如将错误日志和业务日志分开存放,便于开发人员查看,也便于通过日志对系统进行及时监控。

  1. 【强制】对trace/debug/info级别的日志输出,必须使用条件输出形式或者使用占位符的方式。
    说明logger.debug("Processing trade with id: " + id + " and symbol: " + symbol);
    如果日志级别是warn,上述日志不会打印,但是会执行字符串拼接操作,如果symbol是对象,会执行toString()方法,浪费了系统资源,执行了上述操作,最终日志却没有打印。
    正例:(条件)

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

正例

logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);  
  1. 【强制】避免重复打印日志,浪费磁盘空间,务必在log4j.xml中设置additivity=false。
    正例:
  2. 【强制】异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么通过关键字throws往上抛出。
    正例logger.error(各类参数或者对象toString + "_" + e.getMessage(), e);
  3. 【推荐】谨慎地记录日志。生产环境禁止输出debug日志;有选择地输出info日志;如果使用warn来记录刚上线时的业务行为信息,一定要注意日志输出量的问题,避免把服务器磁盘撑爆,并记得及时删除这些观察日志。
    说明:大量地输出无效日志,不利于系统性能提升,也不利于快速定位错误点。记录日志时请思考:这些日志真的有人看吗?看到这条日志你能做什么?能不能给问题排查带来好处?
  4. 【参考】可以使用warn日志级别来记录用户输入参数错误的情况,避免用户投诉时,无所适从。注意日志输出的级别,error级别只记录系统逻辑出错、异常等重要的错误信息。
    如非必要,请不要在此场景打出error级别。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106525.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • CGI与FastCGI

    CGI与FastCGI

    2021年10月27日
  • 激活码2089(已测有效)

    激活码2089(已测有效),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 处理高并发的六种方法

    处理高并发的六种方法处理高并发的六种方法1:系统拆分,将一个系统拆分为多个子系统,用dubbo来搞。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,这样就可以抗高并发。2:缓存,必须得用缓存。大部分的高并发场景,都是读多写少,那你完全可以在数据库和缓存里都写一份,然后读的时候大量走缓存不就得了。毕竟人家redis轻轻松松单机几万的并发啊。没问题的。所以你可以考的虑考虑你的项目里,那些承载主要请求读场景…

  • 测试技术提升分享_测试技术分享

    测试技术提升分享_测试技术分享在腾讯课堂上分享测试技术相关的课程也有一段时间了,同时在博客(http://blog.sina.com.cn/u/1760715297)和微信公众号上也分享了不少相关文档。现在已经有相当关注度,也有很多同学加入了我们的QQ群(867446822)积极地进行交流。但在交流过程中,也存在不少问题,有相当的同学不了解我们的课程,也不清楚如何学习,所以我写这篇文章,给大家做个指导:一,测…

  • 实现微信机器人开发

    实现微信机器人开发首先微信聊天机器人,是一种通过自然语言模拟人类进行对话的程序。通常运行在特定的软件平台上,如PC平台或者移动终端设备平台。测试问文档:https://www.wkteam.cn/文档测试过程中实现多项功能进行管理登录模块◆登录微控平台member/login◆获取微信二维码user/login◆执行微信登录getIPadLoginInfo◆获取联系人列表(群、好友)getAllContact◆二次登录(退出微信号需要再次登录调用此接口即可)secondLogin◆退出微信l

  • redhat8本地yum源配置_redhat7网络yum源配置

    redhat8本地yum源配置_redhat7网络yum源配置redhat8—配置yum源1、挂载系统光盘mkdir-pmount/dev/sr0/mnt/cdrom2、配置yum源将这段内容粘贴进去[BaseOS]name=BaseOSbaseurl=file:///mnt/cdrom/BaseOSenabled=1gpgcheck=0[AppStream]name=AppStreambaseurl=file:///mnt/cdrom/AppStreamenabled=1gpgcheck=0:wq!保存退出3、测试yu

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号