前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么打日志

怎么打日志

作者头像
王小明_HIT
发布2019-08-13 10:16:49
8580
发布2019-08-13 10:16:49
举报
文章被收录于专栏:程序员奇点程序员奇点

什么时候该打日志

  • 当你必须通过Debug才能定位问题的时候,说明应该打日志,好的系统,一般通过日志就能定位问题。
  • else if, switch 分支时,首行最后打印日志,以确定程序进入哪个分支。
  • 一般来说,日志可以看到整个业务流程,否则日志就是残缺的

栗子:

代码语言:javascript
复制
public void execute(String[] arguments) {
    String logInfo = "class" + this.hashCode();
    logger.info(logInfo + " start..."); //业务开始
    try { 
    /*业务逻辑实现…*/

    /*业务逻辑实现…*/
    } catch (Exception e) {
        logger.error(logInfo + " execute error", e); //业务异常结束
    }
    logger.info(logInfo + " end."); //业务正常结束
}
  • 异常捕获是 需要打印日志,比如数据库查询,插入等操作是要打日志的,否则不知道哪个SQL出现异常了
  • 重要信息,比如说某个重要参数不能为空,此时判断是否为空,为空的记录到日志中。

栗子:

代码语言:javascript
复制
try { 
    ...
} catch (Exception e) {
   logger.error("", e);
}

打印日志方式

  • 使用正确的日志级别打印日志,只对严重的逻辑异常使用error,在程序的关键节点输出 info 日志,接口函数可打印 debug 日志,生产环境上不能使用 debug 日志,否则日志量巨大。

栗子:

对于 debug 日志级别日志,必须判断 debug 级别后才能打印日志。

代码语言:javascript
复制
if (logger.isDebugEnabled()) {
    logger.debug("Processing trade with id: " +id + " symbol: " + symbol);
}
  • 在接口调用时,方便问题查询,可以采用 AOP 模式来打印函数接口日志
  • 线程的已经存在的无用日志,会累计大类的无用数据,可以适当提高日志级别来避免占用磁盘。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档