jenkins插件开发过程中log4j包冲突问题解决过程

最近在做jenkins插件,关于负载(job分配到节点)均衡问题,使用log4j做日志,但是,在pom.xml中加入log4j依赖包,配置好log4j.properties,在需要输出日志的地方加入代码。以上完成以后怎么也没有日志产生。因为是插件,测试比较复杂,同时也没错误信息日志,只能一步一步过滤可能的bug.

第一:想到log4j.properties配置文件位置错误,log4j.properties需要放在classpath,即根目录下,此插件目录结构不同,应该放在src/main/resources目录下,这样maven打包以后就在根目录下。排除此种可能。

第二:有可能是jar包问题,发现在项目下有两个log4j-over-slf4j-1.7.7.jar,同样存在org.apache.log4j.Logger;当时想到可能import 这个jar包的Logger(此jar包在log4j.jar前面),首先,将此jar包删除,如下:


最下面的scope是test,所以不用删除,上面的是jenkins-core的依赖包,删除这个依赖(在pom.xml中改)。

       <dependency>

              <groupId>org.jenkins-ci.main</groupId>

              <artifactId>jenkins-core</artifactId>

              <version>1.625.3</version>

       <exclusions>

              <exclusion>

                    <groupId>org.slf4j</groupId>

              <artifactId>log4j-over-slf4j</artifactId>

              </exclusion>

       </exclusions>

       </dependency>

问题解决。

附:

log文件的的位置:

       Appender appender =Logger.getRootLogger().getAppender("file");

       FileAppenderfileappender=(FileAppender)appender;

       System.out.println(fileappender.getFile());

该类jar包的位置:

       ProtectionDomain pd1 =Logger.class.getProtectionDomain(); 

       CodeSource cs1 =pd1.getCodeSource(); 

       cs1.getLocation().toString();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值