log4j日志路径中加入日期

要用log4j使用记录日志,日志路径有每日的日期,文件大小5M新增文件。
实现方式
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();		// 激活设置


最后一个激活设置很重要。

目前还有一个问题是会生成一个logs/service.log的空文件。目前还在查找原因。

你可能感兴趣的:(java,log4j)