Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Log4j.xml中使用动态文件名?_Log4j - Fatal编程技术网

如何在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

如何从属性文件中读取属性并在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


您能帮我一下吗?我如何实现上述方法?

下面是使用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;
}