如何为tomcat服务器上的多个app配置公共的logback.xml
发布网友
发布时间:2022-07-13 14:02
我来回答
共1个回答
热心网友
时间:2023-11-01 10:45
当你司在tomcat服务器上部署了多个app,又想为这多个app采用统一的log配置方案,通用的solution一般是(这里以logback为例):
配置一个公共的log property或xml文件,比方说采用了logback, 我们会有一个myLogback.xml
将该配置文件放于tomcat的一个common目录,比如your_tomcat/conf, 并将该目录加入到tomcat的classPath, 方法有很多,最简单你的可以直接修改catalina.bat或setclasspath.bat,增加该目录到CLASSPATH变量中
在每个app的web.xml中指定logback.configuration的resource name
<env-entry>
<description>JNDI logging context for this content pack</description>
<env-entry-name>logback/context-name</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>app</env-entry-value>
</env-entry>
<env-entry>
<description>URL for configuring logback context</description>
<env-entry-name>logback/configuration-resource</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>myLogback.xml</env-entry-value>
</env-entry>
4, 在tomcat的启动时
set “JAVA_OPTS= %JAVA_OPTS% -Dlogback.ContextSelector=JNDI”
这样,logback在启动时,就会通过contextSelector在你app的classLoader目录下寻找web.xml定义的logback/configuration-resource,在这里例子中,contextSelector会在启动的过程中在classLoader的目录中寻找myLogback.xml作为logContext的配置文件,由于classLoader的机制是继承于容器的,所以,索然myLogback.xml没有放在war包当中,但我们仍然可以在容器的classpath目录中找到它