0

我尝试构建 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>

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

我怎样才能解决这个问题?

版本:

  • 码头:9.0.1.v20130408
  • 回退:1.0.7
  • slf4j:1.7.2
4

1 回答 1

0

在嵌入式模式下,您可以控制一切。

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

于 2013-04-18T13:46:52.397 回答