我制作了一个组件(让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框架
答案 0 :(得分:1)
在组件中使用自定义命名的log4j.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属性就被加载了。