码迷,mamicode.com
首页 > 其他好文 > 详细

日志最佳实战

时间:2015-06-09 19:48:17      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

日志最佳实战

1. logback

2. 开发debug,生产info , 异常中用error

3. 使用self4j的占位符方式输入日志。多个参数输出,参数项使用数组的形式。举例 : logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);

     此种形式在确定日志输出级别前,不会拼接字符串。 // LOGGER.isDebugEnabled()

4. 访问日志和错误日志记录到不同的文件中,方便查询

5. 外部接口输入和输出处加记录日志,方便调试

6. 所有怀疑影响性能的地方加上日志记录,不要怕日志多

7. 明确日志的每一项输出

8. 异常日志输出出现异常的具体位置。log中记录内容 e:logger.info("Exception is : ",e);

9. 日志中包含充分的信息,日志中的时间戳要精确到毫秒。

10. ERROR:运行时异常以及预期之外的错误。

      WARN:预期之外的运行时状况,不一定是错误的情况。

      INFO:运行时产生的事件。

      DEBUG:与程序运行时的流程相关的详细信息。

11. 每个记录器对象都有一个运行时对应的严重性级别。该级别可以通过配置文件或代码的方式来进行设置。如果没有显式指定严重性级别,则会根据记录器名称的层次结构关系

      往上进行查找,直到找到一个设置了严重性级别的名称为止。比如名称为“com.myapp.web.IndexController”的记录器对象,如果没有显式指定其严重性级别,则会依次

      查找是否有为名称“com.myapp.web”、“com.myapp”和“com”指定的严重性级别。如果仍然没有找到,则使用根记录器配置的值。

12. 前一天的日志自动压缩

13. MDC和NDC来处理多用户同时访问日志信息。NDC和MDC是log4j用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。

      NDC采用了一个类似栈的机制来push存储上下文信息,每一个线程都独立地储存上下文信息。比如说一个servlet就可以针对每一个request创建对应的NDC,储存客户端

      地址等等信息。相关的信息使用NDC.push(message); 在log的时候将信息输出。在相应的PatternLayout中使用”%x”来输出存储的上下文信息MDC内部使用了类似map

      的机制来存储信息,相对应的方法,MDC.put(key,value);在配置PatternLayout的时候使用:%X{key}来输出对应的value

14. 日志聚合与分析

 

参考文章:http://www.ibm.com/developerworks/cn/java/j-lo-practicelog/   

                 http://www.cnblogs.com/zhengyun_ustc/archive/2012/12/15/logging_bp.html 

               http://www.oschina.net/translate/why-use-sl4j-over-log4j-for-logging

 

日志最佳实战

标签:

原文地址:http://www.cnblogs.com/Jtianlin/p/4564095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!