2013-12-12 4 views
0

나는 DailyRollingFileAppender이 나를 위해 그것을 할 것이라는 것을 안다.하지만 내 파일 크기가 지정된 크기에 도달했을 때 최대 파일 크기를 지원하지 않는다.log_12.12.2012.log와 같이 로그 파일 이름에 날짜를 추가하는 방법은 무엇입니까?

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender"> 

    <param name="Threshold" value="ALL" /> 
    <param name="MaxFileSize" value="50KB" /> 
    <param name="MaxBackupIndex" value="10" /> 
    <param name="File" value="F:/logs/Testing/MyProject.log" /> 

    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{MMM-dd-yyyy HH:mm:ss:SSS} %-5p %m%n"/> 
    </layout> 
</appender> 

MyProject_12.12.2012.log과 같은 파일 이름을 만들고 싶습니다. 내 필요가있다

,

  1. 내 로그 파일이 최대 파일 크기

  2. 에게 모든 로그 파일을 지원해야합니다 날짜에 고유 한 이름을 가지고있다.

스택 사용자가 도와 주길 바랍니다.

답변

1

가 공공 장소에서 사용할 수있는 여러 가지 구현이 있지만, 실제로는 예를 들어

RollingFileAppender 훨씬 쉽게 무시입니다 :

public class MyRollingAppender extends RollingFileAppender { 

Long nextCheck=System.currentTimeMillis() - 1; 
public static final SimpleDateFormat FORMAT=new SimpleDateFormat("yyyyMMdd"); 
String fileNameOriginal=null; 

private void rollFile() { 
    this.closeFile(); 
    GregorianCalendar calendar=new GregorianCalendar(); 
    calendar.set(Calendar.HOUR_OF_DAY, 0); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.MILLISECOND, 0); 
    calendar.add(Calendar.DATE, 1); 

    nextCheck=calendar.getTimeInMillis(); 
    this.setFile(fileNameOriginal); 
    this.activateOptions(); 
} 

@Override 
protected void subAppend(LoggingEvent event) { 
    Long n=System.currentTimeMillis(); 
    if (n>nextCheck) { 
     rollFile(); 
    } 
    super.subAppend(event); 
} 

@Override 
public void setFile(String file) { 
    fileNameOriginal=file; 
    super.setFile(file + FORMAT.format(new Date()) +".log"); 
} 

} 당신은 당신의 특정 요구

로 조정할 수 있습니다

관련 문제