日志规范

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

2.Logger应该是Static和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.Logger error接口的调用必须包含两个参数String message和Throwable。

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 ); //正确
  }
 }
}
6.输出变量值的跟踪代码归类为debug级,纯信息归类为info级。

    @ResponseBody
    @RequestMapping(value = "search", method = RequestMethod.POST)
    public DataTable search(HttpServletRequest request, String acquirerId,String channelName,String providerId) {
        logger.info("entering ChannelController search, with parameter acquirerId [{}], channelName [{}], providerId [{}]", acquirerId, channelName, providerId );
        Pagination<ChannelVO> pagination = null;
        int pageNum = getPageNum();
        int pageSize = getPageSize();
        ChannelBean filterBean = new ChannelBean();
        filterBean.setAcquirerId(acquirerId);
        filterBean.setChannelName(channelName);
        filterBean.setChannelProviderId(providerId);
        filterBean.setIsdelete(0);
        pagination = POJOBuilder.copyProperties(ChannelVO.class,
                channelService.retrieveBy(filterBean, pageNum, pageSize));
        logger.info("leaving ChannelController search");
        return createDataTalbe(pagination, request);
    }

7.不要在日志中调用toString方法