2016-11-09 11 views
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; 
} 

}

事前のおかげで..

+0

'InfoFileAppender'クラスはどのように見えますか? – Berger

+0

確かに私は両方のアペンダーのコードを追加します.. – vinod

+0

アペンダーの両方私はちょうどファイル名をカスタマイズし、それぞれの新しいログファイルを作成しています – vinod

答えて

0

rootLoggerにデバッグを追加しました... log4j.rootLogger = Debug、InfoFileAppender、ErrorFileAppender、stdout

関連する問題