java动态日志注入工具 anylog
- 授权协议: Apache
- 开发语言: Java
- 操作系统: 跨平台
- 软件首页: http://github.com/jobop/anylog
- 软件文档: http://github.com/jobop/anylog
软件介绍
anylog 是一个可以在代码的任意区域无入侵地加入日志的工具,适用于线上问题排查。
anylog 为开发人员提供一个易于使用的平台,帮助开发人员在正在运行的系统中随时加入自己想要的日志,而免于修改代码和重启。
使用场景举例
1、一些同学在写代码时,把异常吃掉了,使得问题难以查找,可以使用这个工具,动态打印出被吃掉 的异常,而不用停机。 2、一些项目依赖第三方jar包,如果发生问题,但第三方包中无日志打印,以往可能需要重新编译第 三方包,加上日志,重启服务,然后排查问题。但使用这个工具,就可以直接动态加入日志,而不用 修改第三方jar包,也不用重启。
已有功能
1、让系统打印某个exception的堆栈,无论此exception是否已经被吃掉都可打印 2、在某个指定类的某个方法的某一行,输出日志。 3、在某个指定类的某个方法的开始,输出日志。 4、在某个指定类的某个方法的结束,输出日志。 5、打印方法耗时,支持方法嵌套。 如果需要扩展新的功能(例如输出jvm的cpu占用,内存大小等),只需要实现spi中的 com.github.jobop.anylog.spi.TransformDescriptor 和com.github.jobop.anylog.spi.TransformHandler接口, 然后把实现的jar包放到providers目录中即可识别。
使用方法
1、获取运行程序: 1)可以到以下地址获取正式发行版:https://github.com/jobop/release/tree/master/anylog 2)你也可以clone下源码后,执行如下命令,生成运行程序,生成的运行程序将在dist目录下 生成windows版本: mvn install 生成linux版本: mvn install -Plinux 2、直接执行startup.bat或者startup.sh即可运行起来 3、访问 http://127.0.0.1:52808 即可使用
功能扩展
anylog利用spi机制实现其扩展,如果你想要对anylog增加新的功能(例如添加返回值打印的功能)可以按照如下步骤操作: 1、使用如下命令,生成一个spi实现工程,并导入eclipse mvn archetype:generate -DarchetypeGroupId=com.github.jobop -DarchetypeArtifactId=anylogspi-archetype -DarchetypeVersion=1.0.4 2、参照该工程中已有的两个例子(一个是在方法开始插入日志,一个是在方法结束插入日志),实现TransformDescriptor和TransformHandler接口 3、把两个接口实现类的全路径,分别加到以下两个文件中 src/main/resources/META-INF/services/com.github.jobop.anylog.spi.TransformDescriptor src/main/resources/META-INF/services/com.github.jobop.anylog.spi.TransformHandler 4、执行mvn install打包,在dist下会生成你的扩展实现jar。 5、把扩展实现jar拷贝到anylog的providers目录下,重启即可生效。 tips:在实现spi时,我们提供了SpiDesc注解,该注解作用在你实现的TransformDescriptor上,可以用来生成功能描述文字。 如果要深入了解spi机制,请自行google:java spi
大思维:集体智慧如何改变我们的世界
杰夫·摩根 / 郭莉玲、尹玮琦、徐强 / 中信出版集团股份有限公司 / 2018-8-1 / CNY 65.00
智能时代,我们如何与机器互联,利用技术来让我们变得更聪明?为什么智能技术不会自动导致智能结果呢?线上线下群体如何协作?社会、政府或管理系统如何解决复杂的问题?本书从哲学、计算机科学和生物学等领域收集见解,揭示了如何引导组织和社会充分利用人脑和数字技术进行大规模思考,从而提高整个集体的智力水平,以解决我们时代的巨大挑战。是英国社会创新之父的洞见之作,解析企业、群体、社会如何明智决策、协作进化。一起来看看 《大思维:集体智慧如何改变我们的世界》 这本书的介绍吧!
