我有两个Web应用程序(Proj1和Proj2)。PropertyConfigurator.configure多个log4j文件
log4j.properties文件是在外部位置(大写C:\ proj1_log4j.properties和C:\ proj2_log4j.properties)
有两个用于初始化log4j的上述网络应用程序Servlet过滤器。代码写在两个过滤器的init()方法中。
为Proj1(文件名= 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的初始化如下为Proj2如下log4j的初始化(文件名= 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%n
proj2_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文件中打印日志。
可能是什么原因。
我想要的是,应创建2个日志文件,proj1.log和proj2.log。
感谢Bhargav。但是如果两个项目的根包发生相同的话呢? – user1771680
你可以挖掘,直到它达到一个阶段,两者会有所不同,并提及它。 –
那么,我项目中的所有模块都具有相同的封装结构,所以这对我来说是不可能的:( – user1771680