前段时间,完善智能导航发送告警短信中短信太长接收不到的bug,牵涉出了日志打印的问题;日志打印这件事说小事小,说大也大,写好日志能方便自己调试代码和发现解决问题,以下就是有关日志打印自己总结的几点经验教训:
日志打印应该分层、分角度,一个好的日志不应该只打印与业务有关的日志。
日志打印应该从以下几个方面去打印:
模块运行日志:模块运行日志包括消息队列的监控、线程的运行状态。该日志应该以INFO级别打印,并且采用间隔打印,或叫做定时打印。以减少日志打印总量。从该角度可以反应出该模块是否有消息队列积压,是否所有线程都运行正常。消息队列的打印可以采用日下格式:
使用统一的关键字Monitor来标示模块运行日志。队列监控日志使用|队列名|消息放入速度|消息取出速度|消息放入个数|消息取出个数|当前队列消息个数|。线程监控日志使用|线程名|线程状态码|,线程状态码可以自己扩展。0表示正常1表示运行结束2表示线程阻塞。
09:16:59.347 INFO |Monitor|ReceiveTimerQueue|0/s|0/s|0|0|0|
09:16:59.347 INFO |Monitor|SendRegistQueue|0/s|0/s|0|0|0|
09:16: