tomcat下多个web应用使用相同的log4j的jar包,如何避免配置文件发生冲突
2015-03-25 17:36
417 查看
我们在开发的时候通常会遇到再同一个服务器下开发多个应用的情况,在公共jar包统一加载的情况下,如果log4j.properties配置不当,经常会发生多个应用的log日志都打印到一个文件里了,如果配置文件配置的是输出所有log打印,那么web应用的加载顺序就是导致这个问题的根本原因,由于配置tomcat加载web应用的顺序是一件比较繁琐的事情,除非各个应用有强依赖关系,否则一般不建议去配置加载顺序;这样就会导致后加载的应用对log4j的配置覆盖了之前应用的配置,最终所有log输出都会出现在最后加载的应用所配置的log文件;
那么知道的原因之后,我们就可以寻找相应的解决方法了,这里仅提供两种作者觉得比较简单且实用的方法;
第一种:将log4j的jar包移除统一加载的lib库,放入单独应用中各自加载,这样就不会发生配置覆盖的情况;
第二种:在log4j.properties配置category属性,该属性可以理解为根类过滤参数,还是实例说明吧,比如你做如下设置
### set log levels ###
log4j.rootLogger = INFO
### 输出到控制台 ###
<span style="background-color: rgb(255, 0, 0);">log4j.category.com = INFO, console </span>
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
### 云平台INFO ###
<span style="background-color: rgb(255, 0, 0);">log4j.category.com.test.cloud = INFO, LOG_TESTCLOUD</span>
log4j.appender.LOG_TESTCLOUD = org.apache.log4j.RollingFileAppender
log4j.appender.LOG_TESTCLOUD .File = /logs/TestCloud/TestCloud.log
log4j.appender.LOG_TESTCLOUD .MaxFileSize = 500KB
log4j.appender.LOG_TESTCLOUD .MaxBackupIndex = 10
log4j.appender.LOG_TESTCLOUD .layout = org.apache.log4j.PatternLayout
log4j.appender.LOG_TESTCLOUD .layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}
注意红色标记部分即是设置category属性,经过上述设置之后,所有在com之下的子包(子类)所打印的log都将输出到控制台,所有在com.test.cloud之下的子包(子类)所打印的log信息,都将写入/logs/TestCloud/TestCloud.log文件;
所以建议不同web应用都要有不同的根包名,以便进行过滤;
那么知道的原因之后,我们就可以寻找相应的解决方法了,这里仅提供两种作者觉得比较简单且实用的方法;
第一种:将log4j的jar包移除统一加载的lib库,放入单独应用中各自加载,这样就不会发生配置覆盖的情况;
第二种:在log4j.properties配置category属性,该属性可以理解为根类过滤参数,还是实例说明吧,比如你做如下设置
### set log levels ###
log4j.rootLogger = INFO
### 输出到控制台 ###
<span style="background-color: rgb(255, 0, 0);">log4j.category.com = INFO, console </span>
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
### 云平台INFO ###
<span style="background-color: rgb(255, 0, 0);">log4j.category.com.test.cloud = INFO, LOG_TESTCLOUD</span>
log4j.appender.LOG_TESTCLOUD = org.apache.log4j.RollingFileAppender
log4j.appender.LOG_TESTCLOUD .File = /logs/TestCloud/TestCloud.log
log4j.appender.LOG_TESTCLOUD .MaxFileSize = 500KB
log4j.appender.LOG_TESTCLOUD .MaxBackupIndex = 10
log4j.appender.LOG_TESTCLOUD .layout = org.apache.log4j.PatternLayout
log4j.appender.LOG_TESTCLOUD .layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}
注意红色标记部分即是设置category属性,经过上述设置之后,所有在com之下的子包(子类)所打印的log都将输出到控制台,所有在com.test.cloud之下的子包(子类)所打印的log信息,都将写入/logs/TestCloud/TestCloud.log文件;
所以建议不同web应用都要有不同的根包名,以便进行过滤;
相关文章推荐
- 【JAVA】使用Eclipse依赖生成jar包时,避免最外层同时生成资源文件的配置。
- 如何使用XCodeFactory自动生成XML配置文件和对应的解析类?
- 如何使用.NET配置文件
- Log4j日志的使用及配置文件(lp)
- Tomcat服务器下如何配置并使用可执行CGI,扩屏名是exe的。
- 如何使用.NET配置文件(一)
- Enterprise Library 2.0 技巧(1):如何使用外部配置文件
- 如何使用命令打jar文件
- Tomcat应用程序目录、端口、默认目录、应用程序默认打开文件、使用数据库连接池等方面的配置
- JSP配置,教你如何熟练使用TOMCAT
- 如何使用.NET配置文件(转载)
- 如何使用_NET配置文件
- 如何使用.NET配置文件(转载)
- 如何使用.NET配置文件(一)
- 有关Tomcat应用程序目录、端口、默认目录、应用程序默认打开文件、使用数据库连接池等方面的配置
- 如何使用.NET配置文件(一)
- Enterprise Library 2.0 技巧(1):如何使用外部配置文件
- 如何使用.NET配置文件
- 转载:如何使用XCodeFactory自动生成XML配置文件和对应的解析类
- 如何使用.NET配置文件(二)