log 4 jログパスに日付を追加

2194 ワード

ログ4 jでログを使用するには、ログパスに毎日の日付があり、ファイルサイズ5 Mでファイルが追加されます.
インプリメンテーションモード
log4j:
<appender name="serviceLog"
		class="org.apache.log4j.RollingFileAppender">
      	<param name="Encoding" value="UTF-8" />
 		<param name="File" value="logs/service.log" />     
		<param name="Append" value="true" />  
		<param name="MaxBackupIndex" value="10" />  
		<param name="MaxFileSize" value="5MB" />   
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%L] %m%n" />
		</layout>
	</appender>

	<root>
		<level value="debug" />
		<appender-ref ref="serviceLog" />
	</root>

メモリでパスを変更し、日付を追加します.
String currentDateTem = CommonUtil.getCurrentDateString("yyyyMMdd");
		 
		 if(currentDate.equals(currentDateTem)){
			 return;
		 }else{
			 currentDate = currentDateTem;
		 }
		  
		  FileAppender appender = (FileAppender) LogManager.getLoggerRepository().getRootLogger().getAppender("serviceLog");
		
		  String fileName = appender.getFile();
		  String[] filepaths = fileName.split("/");
		  String newFileName = null;
		
		  
		  //        ,          ,        ,           
		  if(filepaths.length == 1){
			  newFileName = currentDate + "/" + fileName;
		  }else{
			  Boolean flag = Boolean.FALSE;
			  for(String str : filepaths){
				  if(!flag){
					  newFileName = str + "/" + currentDate;
					  flag = Boolean.TRUE;
					}else{
					newFileName = newFileName + "/" + str;
					}
			  }
		  }
		
		appender.setFile(newFileName);
		appender.activateOptions();		//     

最後のアクティブ化設定が重要です.
もう1つの問題は、logs/service.logの空のファイルを生成することです.まだ原因を探しています.