2017-03-05 49 views
0

我有一个jar,比如a.jar,我只想在INFO级别启用日志记录。这个jar还依赖于另一个jar,比如说b.jar,它使用Apache HTTP客户端。当我运行我的应用程序,我看到很多调试输出的屏幕包括仅在这一格式的Apache HTTP客户端上的东西,不管是什么,我把在log4j.properties:无法找到使用中的记录器配置

[com.amazonaws.AmazonWebServiceClient] : Internal logging successfully configured to commons logger: true Ignored FQCN: org.apache.commons.logging.impl.SLF4JLocationAwareLog 

对于生活我,我无法弄清楚罐子的配置来自哪里。这是我尝试过的东西。 1.添加一个log4j.properties只a.jar文件的主/资源目录 2.增加了一个log4j.properties只b.jar的主/资源目录 3.删除log4j.properties

请帮我一些输入日志配置可能从哪里获取。

a.jar文件

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.5</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.15</version> 
    <scope>compile</scope> 
</dependency> 

这里的

我这里还有POM提取物是为b.jar

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.7</version> 
    <scope>compile</scope> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.7</version> 
    <scope>compile</scope> 
</dependency> 

回答

0

提取我假设你的意思是this “Apache HTTP client”?如果是这样,那么Log4J的日志配置不会影响HttpClient的日志输出,因为后者既不使用SLF4J也不使用Log4J。正如你可以从this POM看到的,HttpClient使用Apache Commons Logging来代替它的日志输出。

因此,您的目标是通过SLF4J将所有Commons Logging输出重定向到Log4J。这需要两个步骤:

  1. 为Commons Logging添加SLF4J网桥。
  2. 确保网桥用作Commons Logging的替代品。

要添加的桥被描述为here。为确保桥梁实际使用,我会建议exclude the original Commons Logging JAR。你应该能够实现以下新的/更新的依赖两个步骤为您的项目B:

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.5.3</version> 
    <exclusions> 
    <exclusion> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>1.7.24</version> 
</dependency> 

我已经加入了最新版本SLF4J在24年7月1日桥jcl-over-slf4j,因为它似乎是你的SLF4J的版本( 1.7.7)似乎不支持Commons Logging 1.2,但是,它可能被HttpClient使用(至少是4.5.3版中的)。

(请注意,我没有测试过这一点。但是,最终的解决方案至少应该非常相似所描述的方法。)

0

看着this,好像亚马逊SDK罐子之一是地方此日志记录配置将存在于。

它使用apache公共日志记录,并且您在项目中正在执行的任何配置都是针对slf4j完成的,因此不会产生任何影响。

相关问题