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

}

在此先感谢..

+0

InfoFileAppender类是什么样的? – Berger

+0

当然,我会为这两个appender添加代码.. – vinod

+0

在appender中,我只是自定义文件名并创建每个运行的新日志文件 – vinod

回答

0

在rootLogger中添加了调试... log4j.rootLogger = Debug,InfoFileAppender,ErrorFileAppender,stdout

相关问题