如何从属性文件中读取属性并在log4j.xml中使用(如果未找到)则使用默认路径。
对于实例
<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
答案 0 :(得分:0)
下面是使用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;
}