java动态日志注入工具 anylog

Apache
Java
跨平台
2015-10-10
大乌贼

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
加载中

评论(2)

assembll
assembll
单机测试了下,挺好 #anylog#
gongweixin
gongweixin
感觉刁刁的,有机会试试,如果可用还是非常方便的 #anylog#

anylog 1.0.5 版本发布,Java 动态日志注入工具

本次版本更新如下 1、增加方法耗时打印,使用一棵在threadlocal中维护的树存储方法调用堆栈 可以将多个嵌套方法的调用耗时 以栈形式打印出来,例如A方法调用B方法,B方法调用C方法 如果在这三...

2015/11/28 10:00

anylog 1.0.4 版本发布,日志记录工具

anylog-1.0.4 版本发布,此版本更新列表如下: 1、界面美化 2、兼容了注入代码结尾的;缺失问题 3、增加了注入结果返回,不再永远是success 4、其他代码重构 anylog 是一个可以在代码的任意区...

2015/10/26 16:39

没有更多内容

加载失败,请刷新页面

没有更多内容

1
回答
提交时报500错误,无法找到LinuxVirtualMachine

本地JDK环境是jdk1.7.0_80 ,系统是MAC ,官方com.tools.attach下并没有 LinuxVirtualMachine这个类,难道...

2015/10/22 15:26
3
回答
如何使用请在详细说明一下

@大乌贼 非常NB的工具!!!对于产品排查问题有很大的帮助。在本地已经将测试程序运行起来了并且尝试加入一行日志,看似好像添加成功了,但无论是$sysout...

2015/10/13 16:39
4
回答
anylog不能连接tomcat错误

@大乌贼 请教下,我尝试用anylog 连tomcat ,needInjectClassName=java.lang.RuntimeException 报...

2015/10/13 13:05
6
回答
启动之后什么都检测不到。。。

本机启动了一个web项目,一个java项目,访问后虚拟机列表为空,不知道是否正常。

2015/10/12 10:08

没有更多内容

加载失败,请刷新页面

没有更多内容

动态日志工具anylog正式版发布

动态打印日志 无需重启 btrace anylog

2015/10/10 16:14
181
1
AOP技术讨论

#1 2015-10-14 AOP讨论 强烈推荐文章 - [AOP 那点事儿](http://my.oschina.net/huangyong/blog/161338) 黄勇 - [AOP 那点事儿(续集)](http://my.oschina.net/huangyong/blog/161402) 黄勇 ...

2015/10/15 08:19
1K
1
Swift-使用NSXMLParser解析XML文件

Swift-使用NSXMLParser解析XML文件

2015/11/29 15:17
508
0
AOP技术讨论提纲

坚持学习就是一种进步

2015/11/02 08:42
35
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部