首页 > JAVA > java 日志编码规范

java 日志编码规范

2009年10月17日 admin 发表评论 阅读评论

应用程序的开发离不开日志日志对于分析应用程序的故障(日志可以记录出现问题的那个段时间程序的运行情况)、性能、执行效果等都非常有帮助。可就是这样一个非常有帮助的东西,大家在使用的时候还存在不少的误区和使用不当的地方。这篇文章的目的就是整理一些Java日志的编码规范,希望对大家有帮助,整理有错误的地方也请告知。

以下是一些最基本的Logger编码规范

1.在一个对象中通常只使用一个Logger对象。

2.Logger应该是Static和final的,只有在少数需要在构造函数中传递logger的情况下才使用private final。

3.不允许出现System print(包括System.out.println和System.error.println)语句。

4.不允许出现printStackTrace,例如

class Foo {
 void bar() {
  try {
   // do something
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

5.在公共的日志里禁止打印程序的调试或者提示信息。

以下是针对最常使用的org.apache.commons.logging.Log 接口的编码规范

6.Logger接口的调用必须包含两个参数String message和Throwable。

因为logger.error( e ); 这样的日志输出方法会丢失掉最重要的StackTrace信息。

public class Main {
 private static final Log _LOG = LogFactory.getLog( Main.class );
 void bar() {
  try {
  } catch( Exception e ) {
   _LOG.error( e ); //错误
  _LOG.error(e.getMessage()) //错误
  } catch( OtherException oe ) {
   _LOG.error( oe.getMessage(), oe ); //正确
  }
 }
}

 

7.在输出日志时,低级别的输出一定要判断isXXEnabled info及以下级别。

参考

7 Good Rules to Log Exceptions

Logging: commons-logging and Log4j

Apache Common Logging Guide

Java Tips: Simplify logging

5 Common Log4J Mistakes

log4j Default Initialization Procedure

DOMConfigurator

PropertyConfigurator

分类: JAVA 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.