7月30日日常工作学习记录

AIM:

  • troubleshooting

  • show status

怎样记日志方便troubleshooting

  • 对外部的调用封装

    • 对外部系统与模块的依赖调用前后记下日志,方便接口调试

    • LOG.debug('calling external system' + parameters);

    • LOG.debug('called successfully. param is' + param);

    • LOG.warning('failed at calling x system');

  • 状态变化

    • isRunning = true / false;

    • LOG.info('system is running');

    • LOG.info('system was interrupted by ' + );

  • 系统入口与出口

    • 粒度可以是重要方法级or模块级。记录它的输入输出,方便定位。

  • 业务异常

    • 任何业务异常都应该记录下来

  • 非预期执行

    • 为程序在“有可能”执行到的地方打印日志。

    • 虽然最终程序的执行结果相同,但是要考虑到是否是正确的路径让程序执行成功,而不是另外的方式执行的,而致使结果相同

  • 很少出现的else情况之中,打印log

程序运行状态可以记录哪些?

  • 程序运行时间 log.info('execution cost : ' + currentTime - startTime);

  • 大批量数据的执行进度 log.debug('current progress : ' + currentPos/total);

  • 关键变量及正在做哪些重要的事情: 执行关键逻辑,做io操作等

    • log.info('x is ' + x);

    • log.info('calling remote metod :' + params);

应该避免怎样的日志方式

  • 混淆信息的log

    • log应该是清晰准确的

  • 记错位置

  • 记错级别 i.e:混淆代码错误和用户错误

    • 不要记录用户的错误行为

  • 遗漏信息

    • 要有stacktrace

参考: url-link


niecprea
871 声望54 粉丝

Hello world!