0
请检查下面的配置,我唯一的一个appender(错误)被调用不知道为什么信息没有被调用。 InfoFileAppender和ErrorFileAppender都是自定义的appender。 我是否需要其他配置?Log4j多个自定义appender没有被调用
log4j.rootLogger=InfoFileAppender,ErrorFileAppender,stdout
log4j.appender.InfoFileAppender =com.configuration.InfoFileAppender
log4j.appender.InfoFileAppender.layout.ConversionPattern = %d{ABSOLUTE} %5p %c - %m%n
log4j.appender.InfoFileAppender.Threshold=INFO
log4j.appender.InfoFileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.InfoFileAppender.File =Info.log
log4j.appender.ErrorFileAppender =com.configuration.ErrorFileAppender
log4j.appender.ErrorFileAppender.layout.ConversionPattern = %d{ABSOLUTE} %5p %c - %m%n
log4j.appender.ErrorFileAppender.Threshold=ERROR
log4j.appender.ErrorFileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.ErrorFileAppender.File =Error.log
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c - %m%n
InfoFileAppender.java
public class InfoFileAppender extends FileAppender {
String pattern = "ddMMMyyyy";
SimpleDateFormat dtFormat = new SimpleDateFormat(pattern);
public InfoFileAppender() {
}
public InfoFileAppender(Layout layout, String filename, boolean append,
boolean bufferedIO, int bufferSize) throws IOException {
super(layout, filename, append, bufferedIO, bufferSize);
}
public InfoFileAppender(Layout layout, String filename, boolean append)
throws IOException {
super(layout, filename, append);
}
public InfoFileAppender(Layout layout, String filename) throws IOException {
super(layout, filename);
}
public void activateOptions() {
if (fileName != null) {
try {
fileName = getNewLogFileName();
setFile(fileName, fileAppend, bufferedIO, bufferSize);
} catch (Exception e) {
errorHandler.error("Error while activating log options", e,
ErrorCode.FILE_OPEN_FAILURE);
}
}
}
private String getNewLogFileName() {
if (fileName != null) {
final String DOT = ".";
final File logFile = new File(fileName);
final String fileName = logFile.getName();
String newFileName = "";
Calendar calendar = Calendar.getInstance();
final int dotIndex = fileName.indexOf(DOT);
if (dotIndex != -1) {
newFileName = fileName.substring(0, dotIndex) + "_"
+ dtFormat.format(calendar.getTime()) + "_"
+ calendar.get(Calendar.HOUR) + "_"
+ calendar.get(Calendar.MINUTE) + "_"
+ calendar.get(Calendar.SECOND);
newFileName = newFileName + "." + fileName.substring(5);
} else {
// the file name has no extension. So, just append the timestamp
// at the end.
newFileName = fileName + "_" + System.currentTimeMillis();
}
return newFileName;
}
return null;
}
}
ErrorFileAppender.java
public class ErrorFileAppender extends FileAppender {
String pattern = "ddMMMyyyy";
SimpleDateFormat dtFormat = new SimpleDateFormat(pattern);
public ErrorFileAppender() {
}
public ErrorFileAppender(Layout layout, String filename, boolean append,
boolean bufferedIO, int bufferSize) throws IOException {
super(layout, filename, append, bufferedIO, bufferSize);
}
public ErrorFileAppender(Layout layout, String filename, boolean append)
throws IOException {
super(layout, filename, append);
}
public ErrorFileAppender(Layout layout, String filename) throws IOException {
super(layout, filename);
}
public void activateOptions() {
if (fileName != null) {
try {
fileName = getNewLogFileName();
setFile(fileName, fileAppend, bufferedIO, bufferSize);
} catch (Exception e) {
errorHandler.error("Error while activating log options", e,
ErrorCode.FILE_OPEN_FAILURE);
}
}
}
private String getNewLogFileName() {
if (fileName != null) {
final String DOT = ".";
final File logFile = new File(fileName);
final String fileName = logFile.getName();
String newFileName = "";
Calendar calendar = Calendar.getInstance();
final int dotIndex = fileName.indexOf(DOT);
if (dotIndex != -1) {
newFileName = fileName.substring(0, dotIndex) + "_"
+ dtFormat.format(calendar.getTime()) + "_"
+ calendar.get(Calendar.HOUR) + "_"
+ calendar.get(Calendar.MINUTE) + "_"
+ calendar.get(Calendar.SECOND);
newFileName = newFileName + "." + fileName.substring(6);
} else {
// the file name has no extension. So, just append the timestamp
// at the end.
newFileName = fileName + "_" + System.currentTimeMillis();
}
return newFileName;
}
return null;
}
}
在此先感谢..
InfoFileAppender类是什么样的? – Berger
当然,我会为这两个appender添加代码.. – vinod
在appender中,我只是自定义文件名并创建每个运行的新日志文件 – vinod