写点什么

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:111273
用户头像

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

关注

评论

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

kubernetes系列随笔01:云原生发展

Geek_cd6rkj

Kubernetes 云原生 弹性

dubbo 配置 loadbalance 不生效?撸一把源码

捉虫大师

dubbo

【等保小知识】等保、分保以及关保分别是什么意思?

行云管家

网络安全 等保 等级保护 分保

一分钟带您了解,堡垒机主要功能有哪些?

行云管家

网络安全 服务器 堡垒机 等级保护

lims实验室信息监控管理系统解决方案

低代码小观

企业管理 管理系统 LIMS实验室信息管理系统 LIMS系统 信息管理系统

极客 - 大数据 - 作业 Flink

西伯利亚鼯鼠

图解Java线程状态转换

程序猿阿星

Java并发 线程 线程状态

Apache ShenYu源码阅读系列-基于Http长轮询的数据同步

子夜2104

网关 shenyu

如何快速搞定第三方登录且易扩展?

Tom弹架构

Java 架构 设计模式

生成式AI,引领AI从“换脸”到“造脸”

海比研究院

第四模块作业-设计千万级学生管理系统的考试试卷存储方案

彦欲

架构训练营

Gartner发布2021企业低代码魔力象限,Mendix连续三年第一!

J2PaaS低代码平台

低代码 数字化 低代码开发平台

pygame 中的图形绘制函数、帧速率和文字相关知识,简单的的不得了

梦想橡皮擦

11月日更

当你在跑步时在想什麽? 这个是村上春树的,当你在骑摩托车时在想什麽? 这个是波西格的

叶小鍵

Redis 核心篇:图解 Redis 为什么这么快

码哥字节

redis 后端 Java 分布式 11月日更

【Redis技术专题】分析一下Redission实现分布式锁的点点滴滴

码界西柚

redis redission redisson 分布式锁 11月日更

APP与小程序,相爱相杀

Speedoooo

容器 ios开发 APP开发 Andriod开发

LCN基本原理

平凡人生

增量编译:让小程序包编译速度提升11倍!

Speedoooo

容器 ios开发 APP开发 Andriod开发

苏杰:爆款产品是把基本动作做到位的结果

博文视点Broadview

lims实验室管理系统是什么?实验室信息管理系统介绍!

低代码小观

企业管理 管理系统 LIMS实验室信息管理系统 LIMS系统 信息管理系统

MRS HetuEgine的数据虚拟化实践

华为云开发者联盟

大数据 数据湖 云原生 华为云 数据虚拟化

手把手教你从零开始搭建个人博客,20分钟上手

老表

Hexo 个人博客 服务器 教程分享 11月日更

「The Monthly Echo」十月社区成长回顾

SphereEx

数据库 开源 ShardingSphere 技术沙龙 SphereEx

《黑客之道》- kali LInux之WireShark抓包及常用协议分析

学神来啦

网络安全 Wireshark 渗透 kali

2021DevOps国际峰会·北京站|龙智展位盛况回顾

龙智—DevSecOps解决方案

DevOps Atlassian

一招教你快速打造企业级数据可视化大屏

云智慧AIOps社区

开源 大前端 数据可视化 大屏可视化 大屏

Mac 系统如何利用软链接在根目录创建文件夹?

程序员泥瓦匠

Mac 文件写入

恒源云(GpuShare)_【功能更新】镜像市场上线

恒源云

深度学习

公司刚来的阿里p8,看完我构建的springboot框架,甩给我一份文档

Java 编程 程序员 Spring Boot

工程师什么时机最合适选择跳槽?

程序员泥瓦匠

面试 加薪 跳槽 升职

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