jar包linux加载log4j,Java instrment手工加载Log4j配置文件

使用Java instrument做一个代码监控的工具,监控日志想用log4j记录,遇到了点问题。

启动应用的命令行加入-javaagent参数,可以在加载类时对其字节码做修改,常用工具有asm、javasssit。

我希望能额外加载用于监控的log4j的配置,但发现如果在instrument类中手工加载了监控的log4j配置,应用程序使用Logger.getLogger(“xx”)时,不会去classpath下查找应用log4j.properties并加载,而是报了not found root logger的警告。

1.    Jar包的METEINFO.MF配置

需要配置:

Premain-Class: com.PerfMonAgent

Boot-Class-Path: ./ lib/log4j-1.2.14.jar lib/javassist-3.18.GA.jar

使用maven打包做如下配置即可:

org.apache.maven.plugins

maven-jar-plugin

com.PerfMonAgent

./ lib/log4j-1.2.14.jar lib/javassist-3.18.1-GA.jar

目录结构

lib

|-log4j-1.2.14.jar

|-javassist-3.18.GA.jar

log4j.properties

log4j_monitor.properties

logs

monitor.properties

monitor.jar

2.    Premain先加载应用配置,在加载监控配置

Logger.getRootLogger(); //使用PropertyConfigurator也可以

PropertyConfigurator.configure(configFile);

3.    问题

由于在Bootstrap阶段做log4j的类加载、配置加载,log4j的配置对所有应用都是共享的,如果server下部署了多个应用,这种方法不能解决,还需进一步研究。

相关阅读:

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值