尝试记录jetty日志时,在jetty 9嵌入式webapp上出现SLF4J多重绑定错误

时间:2013-04-18 13:22:56

标签: logging jetty slf4j logback embedded-jetty

我尝试构建一个webapp的独立版本(可执行jar)。所以我使用jetty加载war文件。 war文件已经包含slf4j和logback作为依赖项。 在我的独立应用程序中,我有logback.xml来定义记录器定义。

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>    

  <appender name="app" class="ch.qos.logback.core.FileAppender">
    <file>/tmp/app.log</file>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="${log.level}">
    <appender-ref ref="app"/>
  </root>

</configuration>

这样可以正常工作,但它仍然在控制台上输出jetty的日志信息而不是日志文件(所有应用程序日志记录都会进入我的日志文件)。 在jetty文档中,我发现我需要在我的嵌入应用程序中包含日志记录框架。 所以我包含了slf4j和logback,但是现在我得到了 SLF4J:类路径包含多个SLF4J绑定。错误并且它没有登录我的文件。

我该如何解决这个问题?

版本:

  • 码头:9.0.1.v20130408
  • logback:1.0.7
  • slf4j:1.7.2

1 个答案:

答案 0 :(得分:0)

在嵌入式模式下,您可以控制所有内容。

如果这只是一个webapp,请删除dupliate jar文件,并考虑设置WebAppContext.setParentLoaderPriority(true)并使用1个ClassLoader中的所有内容。