多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据 - 编程入门网
tarting
(12:01:02) Starting
(12:01:02) Starting
(12:01:02) initializing variables
(12:01:02) initializing variables
(12:01:03) making call to db
(12:01:03) making call to db
(12:01:03) initializing variables
(12:01:03) initializing variables
(12:01:03) making call to db
(12:01:03) making call to db
(12:01:03) Starting
(12:01:04) got value ''A''
(12:01:04) initializing variables
(12:01:04) got value ''B''
(12:01:04) got value ''X''
(12:01:04) got value ''3''
(12:01:04) making call to db
(12:01:05) setting new value to db
(12:01:05) setting new value to db
(12:01:05) got value ''A''
(12:01:05) setting new value to db
(12:01:05) setting new value to db
(12:01:05) done
(12:01:05) setting new value to db
(12:01:05) done
(12:01:05) done
(12:01:05) FAILED!!!
(12:01:05) done
那么那五个线程中哪个线程出了问题呢?这是一个简单的例子,更好的跟踪 语 句将帮助确定问题根源,但是您可以看出,当只有时间戳来指导您时,仅只是五 个线程的输出就是多么令人混淆。所有线程的输出乱七八糟地混合在一起,而定 时问题意味着输出语句不是以相对的线程顺序出现的。 那么您如何自己做出改进呢?关键就是使用 唯一标识符。您需要使用与其输 出相关联的唯一 ID 来标记每个线程。这样将允许基于该唯一 ID 来过滤最终的 跟踪信息。log4j 默认情况下输出类似如下的消息:
注意它已经包括了一个线程 ID。但是正如您从中可以看出的,输出的布局在 默认情况下不是很理想,它丢失了时间戳,而我认为时间戳正是任何日志记录系 统的至关重要的元素。 多线程、多平台环境中的跟踪-使用log4j和UNIX命令来挖掘跟踪数据(3)时间:2011-09-07 ibm幸运的是,log4j 具有一个非常好的特性,它将帮您纠正这个问题:用户可 以 通过配置一个文件来确定跟踪输出的新布局。我将对本文例子使用的文件如清单 3 所示。 清单 3. 示例 log4j 配置文件
其中的有些(或许是全部)初看起来可能相当含糊。让我们逐行地研究它以 理 解其语法。第一行定义了连接到根日志记录器的日志记录器。之后配置的两项是 stdout 和 R 。您可以看到 stdout 与一个 ConsoleAppender 关联,然后被赋 予 一个 PatternLayout 。然后是使用两个变量来定义模式;您将在后面看到那些 变 量如何与输出的各部分相关联。基本上,随后是对 R 完成相同的设置--只不过 它 是一个文件目的地(file appender)。它接受一个文件名称、一个最大尺寸以 及 一个备份索引。备份索引告诉它要保留日志多长时间,因此在到达最大尺寸时, 该日志将被重命名,一个全新的日志文件又开始了。正如您可以看到的, PatternLayout 因而是相同的。 这个配置存储在一个名为 log4j.properties的文件中,我只是将它作为一个 参数传 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |