log4j配置文件动态指定日志文件名称

我们在项目当中经常会使用log4j进行日志记录,偶尔会遇到一些要求,比如日志文件名称按照启动参数动态配置,而不去修改log4j.xml,比较简单的一种做法是,通过设置系统属性的方式实现,代码:

1         if(args.length>=0){
2             System.setProperty("log4fFile", args[0]);
3         }else{
4             System.setProperty("log4fFile","log/runtime.log");
5         }

xml配置:

 1 <?xml version="1.0" encoding="UTF-8" ?>   
 2 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">   
 3 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">   
 4     <appender name="file_daily" class="org.apache.log4j.DailyRollingFileAppender">      
 5         <param name="File" value="${log4fFile}" />      
 6         <param name="DatePattern" value="'daily.'yyyy-MM-dd'.log'" />  
 7         <layout class="org.apache.log4j.PatternLayout">      
 8             <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss/} %-5p] [%t] (%c:%L) - %m%n" />      
 9         </layout>      
10     </appender>    
11  
12     <appender name="console" class="org.apache.log4j.ConsoleAppender">   
13         <layout class="org.apache.log4j.PatternLayout">   
14             <param name="ConversionPattern"   
15                 value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %m%n" />   
16         </layout>   
17     </appender>   
18    
19      <root>       
20         <priority value="INFO" />       
21         <appender-ref ref="file_daily" />    
22         <appender-ref ref="console" />    
23     </root>  
24    
25 </log4j:configuration>  

通过以上这种方式配置就可以达到目的。

原文地址:https://www.cnblogs.com/jessezeng/p/5128329.html