繁体   English   中英

无法找到正在使用的记录器配置

[英]Unable to locate logger configuration in use

我有一个jar,例如a.jar,我只想在INFO级别上启用日志记录。 此jar还依赖于另一个使用Apache HTTP客户端的jar,例如b.jar。 运行我的应用程序时,无论我将log4j.properties放在什么内容中,我都会在屏幕上看到很多调试输出,包括来自Apache HTTP客户端的仅此格式的内容。

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

为了我的一生,我无法弄清楚罐子从哪里得到它们的配置。 这是我尝试过的东西。 1.将log4j.properties仅添加到a.jar的main / resources目录中2.将log4j.properties仅添加到b.jar的main / resources目录中3.删除了log4j.properties

请提供一些有关从何处获取日志记录配置的信息,以帮助我。

这是a.jar的pom提取物

<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>

这是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>

我假设您是说这个“ Apache HTTP客户端” 如果是这样,则Log4J的日志记录配置不会影响HttpClient的日志输出,这仅仅是因为后者既不使用SLF4J也不使用Log4J。 该POM中可以看到,HttpClient使用Apache Commons Logging代替其日志输出。

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

  1. 添加一个SLF4J桥用于Commons Logging。
  2. 确保使用网桥代替Commons Logging。

此处描述要添加的桥。 为了确保实际使用了网桥,我建议您排除原始的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版本jcl-over-slf4j添加了jcl-over-slf4j桥,因为似乎您的SLF4J版本(1.7.7)似乎不支持Commons Logging 1.2,但是HttpClient可能会使用它(至少是版本4.5.3中的版本)。

(请注意,我尚未对此进行测试。但是最终的解决方案至少应该与所述方法非常相似。)

看着这个 ,似乎是一个sdk jars日志存储配置所在的地方。

它使用apache commons日志记录,并且您正在slf4j中完成项目中正在执行的任何配置,因此不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM