jar文件中的log4j.properties

时间:2015-04-18 11:03:23

标签: java log4j

我制作了一个组件(让Say SUBSCRIPTION jar)并将其导出为jar文件。这个组件包括log4j实现,我成功地能够生成日志文件。 (如果独立运行)。

但是,当这个jar(SUBSCRIPTION JAR)被其他项目/组件使用时,我提到的日志文件(在我的组件的log4j.properties中)没有生成。

如果我的组件被其他项目/组件使用,如何确保生成日志文件? (即使他们实现了log4j)

这是我的log4j.properties

log4j.rootLogger=INFO, stdout, logfile
log4j.logger.stdout=DEBUG, stdout
log4j.logger.logfile=DEBUG, logfile

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.Threshold=INFO
log4j.appender.logfile.File=logs/subscritionLogFile.log
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %c:%M:%L -%X{userLoginId} %m%n

注意:使用Apache Log4j框架

1 个答案:

答案 0 :(得分:1)

在组件中使用自定义命名的log​​4j.properties(subscriptionlog4j.properties)文件,并确保使用自定义log4j.properties文件加载组件。

        try {
        InputStream input = SubscriptionController.class.getClassLoader().getResourceAsStream("subscriptionlog4j.properties");
        Properties prop = new Properties();
        prop.load(input);
        PropertyConfigurator.configure(prop);
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("ERROR: Unable to load subscriptionlog4j.properties");
    }

注意:我将上面的代码放在静态块中,这样当我的组件加载时,我的自定义log4j属性就被加载了。