如何在Log4j.xml中使用动态文件名?
如何从属性文件中读取属性并在log4j.xml中使用如果找不到,则使用默认路径 例如如何在Log4j.xml中使用动态文件名?,log4j,Log4j,如何从属性文件中读取属性并在log4j.xml中使用如果找不到,则使用默认路径 例如 <appender name="FILE" class="org.apache.log4j.FileAppender"> <param name="File" value="logs/${logfilename}.log" /> <layout class="org.apache.log4j.PatternLayout"> <pa
<appender name="FILE" class="org.apache.log4j.FileAppender">
<param name="File" value="logs/${logfilename}.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d::[%t]::%-5p::%c::%x - %m%n" />
</layout>
</appender>
在上面的代码片段中,我想从属性文件中检索logfilename的值。如果我在属性文件中提到了logfilename=abc_log
,那么应该在logs文件夹中生成abc_log.log
。如果找不到logfilename属性,则默认情况下应为实例调用位置/logs/default.log
您能帮我一下吗?我如何实现上述方法?下面是使用Log4J动态生成文件名的代码。它根据输入文件名和当前日期时间更改其名称。(如果您多次运行同一个文件,这将非常有用。)(在另一个线程中发现)
下面是使用Log4J动态生成文件名的代码。它根据输入文件名和当前日期时间更改其名称。(如果您多次运行同一个文件,这将非常有用。)(在另一个线程中发现)
public class LogClass {
private static Logger log = Logger.getLogger(LogClass.class);
private static boolean initializationFlag = false;
private static String fileName;
private static void intializeLogger(){
log.setLevel(Level.DEBUG);
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date = new Date();
RollingFileAppender appender = new RollingFileAppender();
appender.setAppend(true);
appender.setMaxFileSize("1MB");
appender.setMaxBackupIndex(1);
appender.setFile(fileName + "_" + dateFormat.format(date) + ".log");
PatternLayout layOut = new PatternLayout();
layOut.setConversionPattern("%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n");
appender.setLayout(layOut);
log.addAppender(appender);
}
public static Logger getLogger(){
if(initializationFlag == false){
intializeLogger();
initializationFlag = true;
return LogClass.log;
}
else{
return LogClass.log;
}
}
public static void setFileName(String fileName){
LogClass.fileName = fileName;
}