首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PropertyConfigurator.configure多log4j文件

PropertyConfigurator.configure多log4j文件
EN

Stack Overflow用户
提问于 2016-06-10 09:39:57
回答 1查看 858关注 0票数 0

我有两个web应用程序(Proj1和Proj2)。

log4j.properties文件位于外部位置(例如C:\proj1_log4j.properties和C:\proj2_log4j.properties)

上述两个web应用程序都有Servlet过滤器,用于初始化log4j。代码是在这两个过滤器的init()方法中编写的。

log4j被初始化为for Proj1 (filename=Proj1Filter.java)

代码语言:javascript
复制
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)

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2016-06-10 10:50:28

将两个追加器proj1 & proj2保存在一个文件中,同时进行以下更改。

路由特定项目日志记录

代码语言:javascript
复制
log4j.logger.com.<project1_root_package> =DEBUG, proj1
log4j.logger.com.<project2_root_pacakge> =DEBUG, proj2

并避免重复的原木集可加性。

代码语言:javascript
复制
log4j.additivity.com.<project1_root_package>=false
log4j.additivity.com.<project2_root_pacakge>=false

最后,您的根记录器变成了类似于

代码语言:javascript
复制
log4j.rootLogger=INFO, stdout1, proj1, proj2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37744936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档