我尝试构建一个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绑定。错误并且它没有登录我的文件。
我该如何解决这个问题?
版本:
答案 0 :(得分:0)
在嵌入式模式下,您可以控制所有内容。
如果这只是一个webapp,请删除dupliate jar文件,并考虑设置WebAppContext.setParentLoaderPriority(true)
并使用1个ClassLoader中的所有内容。