开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

Chronon 2.0 支持 Post Execution Logging

  • 2011-11-18
  • 本文字数:1461 字

    阅读完需:约 5 分钟

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

2011-11-18 10:111200
用户头像

发布了 151 篇内容, 共 63.3 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

我的2023技术总结:以梦为马,不负年华

言程序

大模型 #技术人的2023总结

E3PO:360°视频模拟的探索与发现

RoSofteg

E3PO

1688店铺详情数据接口(1688.seller_info)丨1688API接口

tbapi

1688API接口 1688店铺详情接口 1688公司详情接口 1688店铺评分接口

实时音视频采集和处理:技术探索与实践指南

不会算法。

云原生容器编排问题盘点,总结分享年度使用Kubernetes的坑和陷阱

洛神灬殇

Kubernetes 云原生 问题总结 #技术人的2023总结 方案分析

云原生技术的探索与实践| 主赛道

Emo_TT

云原生 年终总结

技术人的2023漫谈AI语音体验之路

RoSofteg

#技术人的2023总结

在iOS应用中使用实时活动与灵动岛

珲少

打造新一代云原生"消息、事件、流"统一消息引擎的融合处理平台

洛神灬殇

RocketMQ 云原生 #技术人的2023总结 火山引擎开发者社区 2023年技术盘点

大数据安全与隐私保护:构建可信的数据生态系统

范艺笙冉

【新手入门】如何java来求各种数

极客罗杰

paypal实操常见问题——绑卡篇

跨境

PayPal

技术人的 2023 总结之无处不在的AI

六月的雨在InfoQ

AI 2023 #技术人的2023总结

强大的高效视频处理框架——BMF

白日梦

视频处理 多媒体 BMF

大模型:未来的智能方向

在书中成长

AI 大模型 ChatGPT

2023-12-30:用go语言,给你一个下标从 0 开始的整数数组 nums ,它包含 n 个 互不相同 的正整数, 如果 nums 的一个排列满足以下条件,我们称它是一个特别的排列。 对于 0 <

福大大架构师每日一题

福大大架构师每日一题

记录时光爬过2023年AI所留下痕迹,那么24年的AI还神秘吗?

鸿蒙之旅

AI

1688店铺所有商品数据接口(1688.item_search_shop)丨1688API接口

tbapi

1688API接口 1688商品数据接口 1688店铺所有商品数据接口 1688整店商品数据接口

一次不算太好的 E3PO 项目体验

战场小包

开源 视频流 E3PO

KubeWharf: 云原生分布式操作系统体验部署

RoSofteg

KubeWharf

大模型的应用前景:从自然语言处理到图像识别

啊川..

KubeZoo 和 KubeAdmiral 强在哪里?

白日梦

k8s KubeWharf

探索大模型知识库:技术学习与个人成长分享

熬夜磕代码、

结束不是终点,而是新的起点

晴空万里

大数据技术年度总结 | 主赛道

Emo_TT

大数据 可视化 年终总结

云原生架构未来发展趋势,探索容器技术未来的发展趋势

Tech技术攻关

云原生 未来技术趋势 #技术人的2023总结 架构方向

【高效视频处理】BMF 项目安装与老视频修复体验全流程及总结

中杯可乐多加冰

「亲测有效」ChatGPT Plus会员/GPT4开通方法 — 仅需支付宝或微信

跨境

openai VISA ChatGPT

ChatGPT使用注意事项有哪些?

跨境

openai VISA ChatGPT

按图搜索1688商品(拍立淘)接口(1688.item_search_img) 丨1688图片搜索API接口

tbapi

1688图片搜索接口 按图搜索1688商品数据接口 1688图片搜索商品接口 1688拍立淘接口 1688图片搜索API接口

Chronon 2.0支持Post Execution Logging_Java_Kostis Kapelonis_InfoQ精选文章