日期:2014-05-20  浏览次数:20804 次

log怎样的关键信息有助于后期的维护和排错?
log中记录信息的取舍问题。
大家在写系统级程序时,一定会记录一些log(事件log或者debug log),这里存在一个内容取舍的问题。
记得太多,太细,会在高负荷时生成大量无用的log,不利于排错。就算分log level,在遇到问题时,客户一般是打到最高级别的。。。
记少了,又有可能漏掉排错时所必要的关键信息。应该每个人都有这种经验:遇到问题,再去补几行log看看怎么回事。

不知道有没有人在log内容设计上有些心得,可以探讨一下的?

------解决方案--------------------
log4j已经设计得很好了。
你将你输出的日志过滤后另外保存一个文件。

一般分3类 错误,信息,调试。 调试的时候都打开,信息和调试就可以了。
------解决方案--------------------
楼上正解

你把log的日志级别设置好了
平时运行,可以设置在 info 或者 error上
发现问题,设置在 debug 上面


From:http://www.java-powerbuilder.info/log4j_nbjkk.htm
log4j配置信息通常是系统初始化时从配置文件中读入的,当我们在系统运行期需要修改配置信息时通常无法如愿,今天早上看了看log4j的帮助,看到了一种解决方法。
1、创建新的log4j配置文件log4j_examples.xml,放在classpath中
2、在同一个JVM中调用下面的语句
String resource = "/log4j_examples.xml";
URL configFileResource = log.getClass().getResource(resource);
DOMConfigurator.configure(configFileResource.getFile());
这样,新设置log4j的配置信息可以马上启用
------解决方案--------------------
关于日志记录内容的取舍问题,个人认为在你的catch块中首先要记录发生异常时的堆栈信息,这个是最直接能判断程序在什么位置出错、为什么出错的信息;另外还要记录必要的参数信息,比如在容易发生错误的地方记录下用户的输入、传递的参数等信息,依据这个可以知道为什么引起异常(比如用户不按规定格式的输入等等)。

如果想更快速的定位错误,还可以记录时间、用户的操作等信息,但是这些不是必要的,因为根据堆栈信息大多数情况下能推断出在执行什么操作时发生了错误。

说到后期维护,还可以定时的、或者在程序的制定位置记录系统的负载信息,这样可以定时的监控程序的运行情况,有利于程序性能瓶颈的查找。