我有两个web应用程序(Proj1和Proj2)。
log4j.properties文件位于外部位置(例如C:\proj1_log4j.properties和C:\proj2_log4j.properties)
上述两个web应用程序都有Servlet过滤器,用于初始化log4j。代码是在这两个过滤器的init()方法中编写的。
log4j被初始化为for Proj1 (filename=Proj1Filter.java)
public void init(FilterConfig arg0) throws ServletException {
final String LOG_CONFIG_FILE = "C:/proj1_log4j.properties";
File loggingPropFile = new File(LOG_CONFIG_FILE);
FileInputStream fis;
try {
fis = new FileInputStream(loggingPropFile);
Properties properties = new Properties();
properties.load(fis);
PropertyConfigurator.configure(properties);
LOGGER.info("Logger 111 initialiZed successfully...");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}log4j被初始化为for Proj2 (filename=Proj2Filter.java)
public void init(FilterConfig arg0) throws ServletException {
final String LOG_CONFIG_FILE = "C:/proj2_log4j.properties";
File loggingPropFile = new File(LOG_CONFIG_FILE);
FileInputStream fis;
try {
fis = new FileInputStream(loggingPropFile);
Properties properties = new Properties();
properties.load(fis);
PropertyConfigurator.configure(properties);
LOGGER.info("Logger 222 initialized successfully...");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}proj1_log4j.properties
log4j.rootLogger=INFO, stdout1, proj1
log4j.appender.stdout1=org.apache.log4j.ConsoleAppender
log4j.appender.stdout1.Target=System.out
log4j.appender.stdout1.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.proj1=org.apache.log4j.RollingFileAppender
log4j.appender.proj1.File=proj1.log
log4j.appender.proj1.MaxFileSize=10MB
log4j.appender.proj1.MaxBackupIndex=10
log4j.appender.proj1.layout=org.apache.log4j.PatternLayout
log4j.appender.proj1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%nproj2_log4j.properties
log4j.rootLogger=INFO, stdout1, proj2
log4j.appender.stdout1=org.apache.log4j.ConsoleAppender
log4j.appender.stdout1.Target=System.out
log4j.appender.stdout1.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.proj2=org.apache.log4j.RollingFileAppender
log4j.appender.proj2.File=proj2.log
log4j.appender.proj2.MaxFileSize=10MB
log4j.appender.proj2.MaxBackupIndex=10
log4j.appender.proj2.layout=org.apache.log4j.PatternLayout
log4j.appender.proj2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n现在,在启动tomcat时,只创建proj1.log。不创建proj2.log。所有日志都将转到proj1.log。即使是来自proj2的记录器语句也会在proj1.log文件中打印日志。
可能是什么原因。
我想要的是,应该创建两个日志文件,proj1.log和proj2.log。
发布于 2016-06-10 10:50:28
将两个追加器proj1 & proj2保存在一个文件中,同时进行以下更改。
路由特定项目日志记录
log4j.logger.com.<project1_root_package> =DEBUG, proj1
log4j.logger.com.<project2_root_pacakge> =DEBUG, proj2并避免重复的原木集可加性。
log4j.additivity.com.<project1_root_package>=false
log4j.additivity.com.<project2_root_pacakge>=false最后,您的根记录器变成了类似于
log4j.rootLogger=INFO, stdout1, proj1, proj2https://stackoverflow.com/questions/37744936
复制相似问题