anylog

java动态日志注入工具
授权协议 Apache
开发语言 Java
所属分类 程序开发、 日志工具(Logging)
软件类型 开源软件
地区 国产
投 递 者 爱花蜂
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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
  • anylog 是一个可以在代码的任意区域无入侵地加入日志的工具,适用于线上问题排查。 anylog 为开发人员提供一个易于使用的平台,帮助开发人员在正在运行的系统中随时加入自己想要的日志,而免于修改代码和重启。 使用场景举例     1、一些同学在写代码时,把异常吃掉了,使得问题难以查找,可以使用这个工具,动态打印出被吃掉         的异常,而不用停机。     2、一些项目依赖第三方jar

  • RMAN> run {   ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE';   SEND 'NB_ORA_SERV=nbusrv, NB_ORA_CLIENT=Pbdopdb';   restore archivelog from sequence 34722 until sequence 34723 INCARNATION ALL;   RELEASE CHANNE

  • Apache Log4j 2 Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing som

  •   目录 背景 介绍 运行机制 参数 保留参数 log.retention.bytes log.retention.hours log.retention.minutes log.retention.ms log.retention.check.interval.ms 参数间关系 实验 实验 retentions.ms 实验 retentions.btyes 又挖一坑 参考   背景 因为在win

  • 在android开发的过程中,需要查看log信息来帮助分析。那么知晓log的原理就是比较重要的了。 Framework 中的Log Framework中的Log比较简单,主要就是封装接口,在接口中调用println_native函数。下面只以其中的一个进行分析。 public static int v(String tag, String msg) { if (tag == null) {

 相关资料
  • 我创建了以下groovy脚本,以展示如何使用简单的注释将日志字段注入我们的类 当我运行groovy脚本时,我得到以下结果(在GROOVY CONSOLE上) 请告知我们如何将结果打印到WIN机器中的日志文件中,以及需要向groovy脚本中添加什么才能启用它? 例如: 日志文件 C: \程序文件\日志\我的。非常棒。日志 (应包含结果:)

  • 我有一个应用程序,其中包含许多在数据库中创建数据的组件。每个组件记录创建数据时所做的事情。有很多这样的组件,而且应用程序非常灵活,因此每次运行时不必总是执行相同的一组数据创建组件。 目前,所有内容都记录到一个文件中,这会生成一些开始变得不可管理的文件。我希望每个组件都可以登录到一个文件,该文件的名称描述了编写它的组件-应该登录到。 我见过的大多数解决方案似乎都假设不同的记录器是静态的,所以可以按名

  • 问题内容: 我尝试构建基于Java的应用程序。 对于依赖项注入,我使用Google Guice。 现在我想到了在应用程序中记录一些信息的问题。我不是在谈论方法调用等方式的常规日志记录。我对AOP有所了解,并且我可以像这样进行方法调用跟踪。 我要寻找的是手动记录。我需要某种方式登录应用程序中的几乎每个类。所以我考虑了两个选择: 通过使用Guice注入框架通过构造函数(或setter或private

  • 我一直在尝试在我们的Spring应用程序中处理log4j2的安全性以传递Veracode。尤其是CWE 117-日志注入漏洞。我们有一个带有spring-boot-starter-log4j2的Spring应用程序。 我尝试配置log4j2模式: 但它不起作用。我还尝试了这样的方法: 或 我仍然得到veracode结果: 我们不想使用ESAPI或任何日志外观,我们不想更改代码中的所有日志行,有数千

  • 问题内容: 我当前正在创建一个可以包含模块的系统(将它们视为插件),其中每个模块可以拥有自己的专用日志。 我想使用log4j2项目进行日志记录,但是文件附加器似乎有些麻烦。 主项目(整个模块的模块加载器和“核心”)应具有自己的日志文件,而模块应具有自己的日志文件(如)。 通过阅读有关追加程序的文档,我发现了该类,并且我将使用它。直到我发现不能简单地将追加器添加到由创建的默认记录器中。 LogMan

  • 我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻

  • 我想在Log4j2中设置一个目录。xml动态。 Log4j2。xml 运行: 输出: 2017-03-15 18:20:27131主要错误 无法创建文件${sys:logDirectory}/app。记录java。伊奥。IOException: 文件名、目录名或驱动器名的语法错误 ---编辑:德语中的原始错误消息是:-- (Dateinamen,Verzeichnisnamen或Datenträg

  • 编辑 删除这一行后,将在控制台上打印日志。但是,我看不到正在创建的文件。