是它可以覆盖已在被配置的附加器的“文件”属性log4j.properties
而无需创建一个新的appender? 如果是的话 - 如何?
情况是这样的:我有两个apenders,A1是一个是ConsoleAppender和A2是一个FileAppender。 A2的“文件”指出通用error.log中:
log4j.appender.A2.File=error.csv
该附加器只记录错误级别的事件或更差通过
log4j.appender.A2.Threshold=error
。
现在,我想在这取决于不同的文件放在哪个类造成的错误,因为有正在创建的实例几类被写入这些错误。 能够看到哪一类创建错误(或多个)快速会有很大的帮助,因为它是一个很大的帮助的,然后通过error.log中寻找类标签略读。
所以我的想法是覆盖“文件”属性例如,在这些新创建的类的构造函数,所以他们登陆在不同的文件中的错误。
非常感谢提前!
有关运行时访问此链接改变log4j属性
http://alperkaratepe.wordpress.com/2010/01/16/how-to-change-log4j-properties-at-runtime/
private void updateLog4jConfiguration(String logFile) {
Properties props = new Properties();
try {
InputStream configStream = getClass().getResourceAsStream( "/log4j.properties");
props.load(configStream);
configStream.close();
} catch (IOException e) {
System.out.println("Error: Cannot laod configuration file ");
}
props.setProperty("log4j.appender.FILE.file", logFile);
PropertyConfigurator.configure(props);
}
老问题(在谷歌很好的索引)。 除了OP的要求,增加额外的方法iv'e阅读操纵log4j.properties
修改加载log4j.properties
在运行时
private void updateLog4jConfiguration(String logFile) {
Properties props = new Properties();
try {
InputStream configStream = getClass().getResourceAsStream( "/log4j.properties");
props.load(configStream);
configStream.close();
} catch (IOException e) {
System.out.println("Errornot laod configuration file ");
}
props.setProperty("log4j.appender.FILE.file", logFile);
LogManager.resetConfiguration();
PropertyConfigurator.configure(props);
}
设置log4j.properties
在运行时
可以手动完成
Properties properties = new Properties();
properties.setProperty("log4j.logger.org.hibernate", "ERROR");
// ...
LogManager.resetConfiguration();
PropertyConfigurator.configure(properties);
或通过加载不同的属性文件
Properties properties = new Properties();
properties.load(new FileInputStream("/etc/myapp/properties/custom-log4j.properties"));
LogManager.resetConfiguration();
PropertyConfigurator.configure(properties);
VM选项
你可以告诉log4j的使用加载不同的文件log4j.configuration
VM选项
java -Dlog4j.configuration=file:///etc/myapp/properties/custom-log4j.properties
文章来源: override log4j configuration programmatically: file location for FileAppender