BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Chronon 2.0支持Post Execution Logging

| 作者 Kostis Kapelonis 关注 0 他的粉丝 ,译者 王丽娟 关注 0 他的粉丝 发布于 2011年11月19日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Chronon Systems公司最近发布了Chronon 2.0,这款记录JVM信息的调试器在2.0版本里支持Post Execution Logging,即允许用户先执行、后记录日志。

Chronon是个记录JVM信息的调试器,能监控生产环境里的系统、记录它们运行时的内部状态。然后,Chronon可以重放应用流程,精准定位Bug的确切原因。InfoQ先前也曾介绍过Chronon的Time Travelling调试器

调试器的2.0版本支持Post Execution Logging,这意味着程序员可以在应用运行之后再往代码里“插入”日志信息。由于Chronon并不会真正运行应用,只是简单地把应用从一种状态转换到另一种状态,所以和传统的日志记录相比,Post Execution Logging有一个很大的好处,那就是结果是即时的。即使你的程序已经运行了五个小时,然后你在四小时之后才会执行到的某行里添加了一条日志记录语句,Chronon也会立即把结果显示给你。而不用等到问题真正发生才去触发日志输出。

在运行中的Java应用里,日志级别是预先定义好的,也是有约束的。不过它们可以在运行时进行修改,甚至系统已经在生产环境里运行了,所有的改变只会影响后面的日志记录语句。如果在日志级别过高的时候出现了一个错误,那日志信息就不完整了。这迫使程序员在应用里添加更多的日志信息,以便最大限度地获取程序状态。应用在部署的时候通常都使用信息尽可能多的级别(比如TRACE),随着应用的日渐成熟、程序员越来越有把握,程序员就会减少日志信息,把日志级别调高一些(比如INFO)。

但这会严重影响生产效率,因为大型企业应用里的日志记录会带来明显影响。最坏的场景是,日志级别调高后(比如调到了WARN)出现了一个严重错误,开发人员却基本看不出端倪或根本不知道发生了什么。在这种情况下,他们必须再次修改日志级别,并尝试重现生产系统里的错误,以便获取有意义的日志信息。

但使用Post Execution Logging的话,程序员不用把程序限定到特定的级别。在删除所有的日志信息后,这个概念可以发挥到极致,从而有较高的效率。

InfoQ联系了Chronon的CTO、创始人Prashant Deva,请他解释了一下Chronon的工作原理:

Chronon能及时知道应用在任意时刻的整个状态,因为它在生产环境里做了记录。借助这些信息,Chronon可以看到代码的任意方法或任意行,并告诉你执行它的准确时间。当你在某行放置了Post Execution Logging语句,Chronon就知道了这一行被执行的所有时间,也能及时获取到程序在那个时刻的状态。通过这种方式,Chronon可以计算出日志记录语句里那些变量或表达式的值。由于你可以把日志记录语句添加到代码的不同行里去,一旦Chronon得到各行里日志记录语句的结果,它就可以按时间对这些结果进行排序,你就能得到一份日志输出,其结果和执行真正存在日志语句的程序所得到的结果完全一样。

假如你在代码里真写了日志记录语句,Chronon打印的内容基本上就是在这段特定的录制时间段内,这些日志记录语句的输出结果。这给程序员带来了极大的灵活性,因为他们可以在代码的任意位置添加日志记录语句,进而知道生产系统出问题后是否还需要额外的信息(较低的级别或较多的语句),而不用重新部署系统或重现问题。

Prashant解释说:

这不是噱头。从“执行”的意义来说,你添加的日志记录语句就好象他们真的存在在代码里。举例来说,它们知道正在被哪个线程执行;如果你在一个“if”块的某一行添加了日志记录语句,调用这个方法十次会有五次去执行那行代码,那日志输出里也只会显示五条日志语句。

要想了解更多的Chronon相关细节,请移步官方FAQ

查看英文原文:Chronon 2.0 Offers Post Execution Logging

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT