我的公众号:MarkerHub,Java网站:https://markerhub.com更多精选文章请点击:Java笔记大全.md
小Hub领读:不同级别的日志应该辨别应用,另外用 [] 进行参数变量隔离。
西格玛的博客http://t.cn/E9BkD7a应用 slf4j
应用门面模式的日志框架,有利于保护和各个类的日志解决形式对立实现形式对立应用: Logback 框架打日志的正确形式
什么时候应该打日志
当你遇到问题的时候,只能通过 debug 性能来确定问题,你应该思考打日志,良好的零碎,是能够通过日志进行问题定为的。当你碰到 if…else 或者 switch 这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支常常以性能为外围进行开发,你应该在提交代码前,能够确定通过日志能够看到整个流程根本格局
必须应用参数化信息的形式:
logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol);对于 debug 日志,必须判断是否为 debug 级别后,才进行应用:
if (logger.isDebugEnabled()) { logger.debug("Processing trade with id: " +id + " symbol: " + symbol);}不要进行字符串拼接, 那样会产生很多 String 对象,占用空间,影响性能。
反例 (不要这么做):
logger.debug("Processing trade with id: " + id + " symbol: " + symbol);应用 [] 进行参数变量隔离 如有参数变量,应该写成如下写法:
logger.debug("Processing trade with id:[{}] and symbol : [{}] ", id, symbol);这样的格局写法,可读性更好,对于排查问题更有帮忙。 不同级别的应用
ERROR:
基本概念
影响到程序失常运行、以后申请失常运行的异常情况:
关上配置文件失败所有第三方对接的异样 (包含第三方返回错误码)所有影响性能应用的异样,包含: SQLException 和除了业务异样之外的所有异样 (RuntimeException 和 Exception)不应该呈现的状况:
...