问题描述:
之前在测试环境(一台Linux主机)部署了多个tomcat实例(使用cp命令,修改端口),然后将同一个应用部署到多个tomcat实例下,logback配置文件中配置不同的目录作为日志输出地,但是在多个tomcat实例同时运行时,logback配置不起作用,即日志并没有输出到每个tomcat实例对应webapp目录下应用中logback.xml中配置的日志输出目录,而是都输出到了各tomcat实例的logs/catalina.out中,导致catalina.out文件过大,不利于日志查看
后来同时说他在本地还原测试环境,测试时发现日志全输出到第一个启动的tomcat实例中对应的应用配置的logback.xml中配置的日志输出目录中,至于是不是多tomcat实例下logback读取的都是内存中的同一个还有待求证。
解决:
项目中使用了spring MVC框架,加上logback的spring扩展就OK了,具体如下:
1、下载logback的spring扩展包 logback-ext-spring-0.1.1.jar,放入classpath中,注意,如果jre是1.6及以下的,必须使用0.1.1版本的扩展,0.1.2版本及以上的扩展包使用了jdk7编译;
2、在web.xml中加入监听
- <context-param>
- <param-name>logbackConfigLocation</param-name>
- <param-value>classpath:logback.xml</param-value>
- </context-param>
- <listener>
- <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
- </listener>
该监听器最好放置在spring的监听器前。