写log应该注意的几个事项

在大型系统开发中,合理使用日志对于问题排查至关重要。文章介绍了使用log4j时应注意的日志级别、包含类名和方法名、输出有效信息、确保日志正确性以及性能优化等方面的要点,旨在提高日志的质量和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发一些大型系统(无论是C/S还是B/S)的时候,在代码中写一定量的log是必要的。其最主要的作用就是记录系统运行状况,方便问题的解析。

 

摘抄一下孙卫琴的《精通Struts:基于MVC的Java设计与开发》中的说明:

1. 监视代码中变量的变化情况,把数据周期性的记录到文件中供其他应用进行统计分析工作。
2. 跟踪代码运行时轨迹,作为日后审计的依据。
3. 担当集成开发环境中的调试器,向文件或控制台打印代码的调试信息。

 

小一些的系统可能也会要求写log,这个就看系统的需求了。

 

根据我现有的经验,写log必须要注意以下几个事项。

 

1. 注意log级别的使用。

以log4j为例,log4j中的日志级别分为 LOG、DEBUG、INFO、WARN、ERROR、和fatal六个级别。其中系统在正常运行的时候一般会设置为INFO级,而代码中最多使用的log级别为DEBUG级。

如果级别使用混乱的话,比没有使用log还要问题大,因为大量的输出log是要消耗一定性能的。

 

2. log信息最好包含有类名,方法名等相关信息。便于解析bug的时候定位。

 

3. 输出的log内容应该为有效信息。输出无效信息不但是一种不遵守编码规范的表现,简直就是一种”犯罪“。

 

4. 注意输出的log内容的正确性。

经常会遇到的一点问题是输出类似于“xxx.getXXX()”的信息,如果xxx可能为null的话,那么毋庸置疑,这个状况一定会在系统运行的时候发生,想想那个时候客户会是什么样的想法。

所以,这是一个很重要的问题,要保证你的log的可用性,不能在log的地方出了bug。

 

5. 为性能方面的考虑,尽量在输出log之前调用isFatalEnabled()之类的方法判断是否允许当前的log级别。

 ※如果参数只是一个定死的字符串的话(如"xxxx"),不判断也是可以的。

 ※如果是类似于"xx" + "ccc" + value + "aaa"之类的组合字符串,或者需要计算之类的任务的话,那么事先判断就是必须的。因为在调用一个method的时候,总是先计算参数,然后执行method的。

 

暂时就这些总结,以后有新的经验的话,会追加进来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值