我有一个log4j.properties
文件,其中我必须定义大约12个不同的追加器。事实上,除了名称和File
属性之外,所有这些附加器都是相似的。我有这样的东西:
log4j.logger.FOO=DEBUG, fileFOO
log4j.appender.fileFOO=org.apache.log4j.RollingFileAppender
log4j.appender.fileFOO.File=/some/path/file-FOO.log
log4j.appender.fileFOO.MaxFileSize=5MB
log4j.appender.fileFOO.MaxBackupIndex=20
log4j.appender.fileFOO.layout=org.apache.log4j.PatternLayout
log4j.appender.fileFOO.layout.ConversionPattern=%d %-5p ~ %m%n
log4j.logger.BAR=DEBUG, fileBAR
log4j.appender.fileBAR=org.apache.log4j.RollingFileAppender
log4j.appender.fileBAR.File=/some/path/file-BAR.log
log4j.appender.fileBAR.MaxFileSize=5MB
log4j.appender.fileBAR.MaxBackupIndex=20
log4j.appender.fileBAR.layout=org.apache.log4j.PatternLayout
log4j.appender.fileBAR.layout.ConversionPattern=%d %-5p ~ %m%n
正如您所看到的,除了log4j.logger.X
和log4j.appender.fileX.File
之外,所有线路都是相同的
有没有一种方法可以定义appenders的其他属性(MaxFileSize
、MaxBackupIndex
、layout
等)的默认值,比如appender的"继承"?
感谢
尝试实现自定义默认Appender
,然后使用它来代替RollingFileAppender
log4j.logger.FOO=DEBUG, fileFOO
log4j.appender.fileFOO=me.project.MyRollingFileAppender
log4j.appender.fileFOO.File=/some/path/file-FOO.log
public class MyRollingFileAppender extends RollingFileAppender {
public MyRollingFileAppender() {
super();
init();
}
public MyRollingFileAppender(Layout layout, String filename) throws IOException {
super(layout, filename);
init();
}
public MyRollingFileAppender(Layout layout, String filename, boolean append)
throws IOException {
super(layout, filename, append);
init();
}
private void init() {
this.setMaxFileSize("5MB");
this.setMaxBackupIndex(20);
this.setLayout( new PatternLayout("%d %-5p ~ %m%n"));
}
}