0
私の唯一のアペンダー(エラー)がなぜ呼び出されないのかわからないところで、以下の設定を確認してください。 InfoFileAppenderとErrorFileAppenderはどちらもカスタムアペンダです。 他の設定が必要ですか?Log4j複数のカスタムアペンダーが呼び出されない
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
確かに私は両方のアペンダーのコードを追加します.. – vinod
アペンダーの両方私はちょうどファイル名をカスタマイズし、それぞれの新しいログファイルを作成しています – vinod