gpt4 book ai didi

tomcat - 使用slf4j/logback时如何打包webapp?

转载 作者:行者123 更新时间:2023-11-28 21:46:33 26 4
gpt4 key购买 nike

我有很多 Web 应用程序要构建/打包,我想分享它们的公共(public)库。

关于日志记录,我想将 slf4j-api 与每个应用程序捆绑在一起,但考虑由我的容器(目前是 tomcat)提供的实现

为此,我将两个 jar,logback-classic 和 logback-core 复制到 $CATALINA\lib 目录中。

不幸的是,在运行时,slf4j 与其实现之间的绑定(bind)失败并出现以下错误消息:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

我设法让它工作的唯一方法是将 jar 捆绑在 war 文件中。

有什么想法吗?

最佳答案

这不会按预期工作。日志记录框架使用大量静态变量(也称为全局变量)。

因此,每次您加载日志记录配置时,它都会为部署到您的容器的所有应用程序替换它。这通常不是您想要的。

将日志实现与您的 WAR 捆绑在一起,这样网络容器就可以确保每个网络应用程序都有自己的一组全局变量。

[编辑] 如果你真的想用相同的日志配置控制所有应用程序,你必须将所有日志类移动到容器中。这包括 slf4j

我强烈建议将日志配置放入 JAR 中并将其也放在那里。或者部署一个虚拟网络应用程序,它只包含尽可能少的代码(以便 Tomcat 加载它)加上 logback.xml

否则,应用程序的启动顺序将决定当您到达必须更改日志配置的点时的日志记录。

关于tomcat - 使用slf4j/logback时如何打包webapp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4257985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com