最近在维护一个项目(维护也不容易啊,谢谢大家帮忙):简述下: 前台操作员提交大量数据过来,后台就接受数据然后组织形成xml格式输入到日志(这个是必须输入到日志中的,不管xml内容对错),然后再经过复杂的业务处理,再插入数据库。
         目前是项目中是用logger.info("接到原始XML信息:"+ xmlContent);
不过项目组中有人提出:
 
   大量的输入很影响系统效率,毕竟是输出到硬盘,尤其这么大的xmlContent。
   现在用的是info,稳定后建议改为debug输出。
  
  (不知道此人提出的是不是正确的,必须要复合)
   
   问题来也:          如果用logger.debug("接到原始XML信息:"+ xmlContent);
         那么是不是只有在出现异常的情况下才输入到日志呢? 不出现异常就不会输入到日志?                                                                谢谢大家,祝工作顺利!

解决方案 »

  1.   

    现在用的是info,稳定后建议改为debug输出。-----------------------------------------------
    DEBUG 级别比 INFO 低,为什么不稳定用 INFO,稳定用 DEBUG 呢?
    另:logger.debug("接到原始XML信息:"+ xmlContent);这样的写法是有问题,虽然在 INFO 级别时日志并不会被日志管理器输出到任何地方,但是,这里涉及到一个字符串的拼接。Java 中的方法调用参数,是先执行方法参数中的表达式,再进行方法调用的。因此,在 INFO 级别时,这里也涉及一个字符串的连接操作,最不幸的是,这种连接在连完后马上就被扔掉了。一般会把代码写成这样的:if(logger.isDebugEnabled()) {
       logger.debug("接到原始XML信息:"+ xmlContent);
    }仅在 DEBUG 或更低级别时进行日志输出。当然了,这样的写法会导致日志代码量增大,我一般将 slf4j 的日志重新包装,全部使用变参形式,只要这样就可以了:logger.debug("接到原始XML信息:{}", xmlContent);这样的话就不涉及字符串拼接了。
      

  2.   

    现在用的是info,稳定后建议改为debug输出。”:反了吧,debug故名思议是给程序员开发debug用的。上线之后才用高级别的info。这样log少了,系统写log的压力也小。
    异常可以记录在warning和error,严重的可以放fatal,既然要用人家的log系统就最好遵守log设计者的意图。
      

  3.   

    那么是不是只有在出现异常的情况下才输入到日志呢? 不出现异常就不会输入到日志? 对的 debug是针对错误的时候
      

  4.   

    DEBUG是调试模式 打出所有的日志!··
      

  5.   

    你的logger应该可以配置吧。
    比如,系统有个属性可以更改下,是输出debug的日志还是输出info的日志,或者只输出error的日志。
      

  6.   

    用的log4j?它写日志本身是异步执行的,所以写再多的日志也不会影响你主线程的操作效率。不过就是要注意1楼所说的问题。debug()
    info()
    error()
    这是记录时候的级别。约定你写日志的级别是debug、info还是error。但是具体输出到文件想要哪些信息是在配置文件中配的,你可以进行选择输出。这就要看log4j的文档了。
      

  7.   

    "日志本身是异步执行":Good point!