1. 选择恰当的日志级别
常见的日志级别有五种,分别是error、warn、info、debug、trace。
日常开发中,要选择恰当的日志级别。
- error:错误日志,指比较严重的错误,对正常业务有影响,需要运维配置监控的
- warn:警告日志,一般的错误,对业务影响不大,但是需要开发关注
- info:信息日志,记录排查问题的关键信息,如调用时间、出参入参等
- debug:用于开发DEBUG的,关键逻辑里面的运行时数据
- trace:最详细的信息,一般这些信息只记录到日志文件中
2. 日志要打印出参入参
方法进来的时候,打印入参,方法返回时,打印出参
3. 选择合适的日志格式
理想的日志格式,应当包含最基本的信息:当前时间戳、日志级别、线程名字等等
4. 遇到if…else等条件判断时,每个分支尽量打印日志
当你碰到if…else或者switch这样的条件时,可以在分支的首行打印日志,这样排查问题时,就可以通过日志,确定进入了哪个分支,代码逻辑更清晰,更方便排查问题。
5. 日志级别比较低时,进行日志开关判断
对于trace/debug这些比较低的日志级别,必须进行日志级别的开关判断。
6. 不能直接使用日志系统中的API,而是使用门面模式的日志框架(log4net)
7. 建议使用参数占位{},而不是+拼接
使用+操作符进行字符串的拼接,有一定的性能损耗
使用占位符仅是替换动作,可以有效提升性能
8. 建议使用异步的方式来传输日志
日志最终会输出到文件或者其他输出流中,IO性能会有要求的。
如果异步,就可以显著提升IO性能
9. 不要记录了错误日志又抛出异常
C#
_logger.Info("Fail"+ ex);
throw new Exception();
10. 避免重复打印日志
如果已经有一行日志清楚表达了意思,避免再冗余打印
11.日志文件分离
我们把不同类型的日志分离出来,比如info.log或者error.log都可以单独打印到一个文件夹中,也可以根据不同的业务模块打印到不同的日志文件中。