Java 如何分别为Tomcat、应用程序和带有logback的库配置日志记录?

Java 如何分别为Tomcat、应用程序和带有logback的库配置日志记录?,java,tomcat,logging,slf4j,logback,Java,Tomcat,Logging,Slf4j,Logback,我试图在三个地方独立地配置日志记录。理想情况下,记录日志的每个组件都完全不知道其他组件。我想为此使用logback,因为它似乎有一些不错的特性和性能 以下是我希望从中登录的位置: Tomcat(7)应该登录到${catalina_home}/logs/catalina.out,并且应该只记录Tomcat事件(部署、服务器启动等) Tomcat中托管的web应用程序应该登录到${catalina_home}/logs/application.log,并且应该只记录应用程序的事情,比如请求验证或错误

我试图在三个地方独立地配置日志记录。理想情况下,记录日志的每个组件都完全不知道其他组件。我想为此使用logback,因为它似乎有一些不错的特性和性能

以下是我希望从中登录的位置:

  • Tomcat(7)应该登录到${catalina_home}/logs/catalina.out,并且应该只记录Tomcat事件(部署、服务器启动等)
  • Tomcat中托管的web应用程序应该登录到${catalina_home}/logs/application.log,并且应该只记录应用程序的事情,比如请求验证或错误的结果
  • web应用程序中包含的库应该登录到${catalina_home}/logs/library.log,并且应该只记录特定于该库的内容,例如与其他web服务交互所需的时间或特定于库的错误
  • 我知道这可能不是它的工作方式,但我认为我需要为每个问题提供一个logback.xml文件。实际上,我已经创建了它们并将它们添加到类路径中,这样我就得到了一个“logback.xml在类路径上多次出现”错误


    我可以理解为什么我需要将我的应用程序和我的库logback配置整合到一个logback.xml文件中,但是如何将容器日志记录配置与应用程序+库日志记录配置分开?将logback配置文件添加到我的应用程序中,以及如上所述启用Tomcat的logback,仍然会产生“multiple logback.xml”错误。此外,关于日志分离的logback用户手册并没有真正说明如何分离容器和应用程序(只是多个应用程序),除非我遗漏了一些内容。

    我现在面临同样的问题(你的1+2分)。我没有收到任何错误,但它不起作用。我的webapp和tomcat7有单独的logback.xml文件(+libs、configs等),但它们登录到同一个日志文件。你发现这方面的新信息了吗?我看过一些博客,但大多数看起来都过时了,或者它们经常只显示如何在tomcat中用logback替换JULI,而不显示与同样使用logback的Web应用程序的交互…我从未将此应用于logback,但成功地使我的应用程序使用log4j2,让它100%工作的诀窍是,通过在POM文件中的“依赖项”声明中添加“exclude”子句,确保可传递依赖项不包含SLFJ日志实现(如果您使用的是Maven)。在log4j2.xml文件中,我通过过滤包名称空间将日志事件从某些依赖项发送到不同的文件,并以这种方式将日志分开。