2

我正在使用 log4j 进行日志记录。我有一个要求,应该在用户在命令提示符下输入的路径中创建日志文件。是否可以动态更改日志文件路径。我还必须在文件名中创建一个带有当前时间戳的单独日志文件。这可能吗?

4

1 回答 1

1

根据用户输入设置文件路径

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

public class DemoClass {

  public static void main(String[] args) {
    Logger logger = Logger.getLogger("main");
    FileAppender fileAppender = new FileAppender();
    fileAppender.setLayout(new PatternLayout("%-5p [%t]: %m%n"));
    logger.addAppender(fileAppender);
    String userLogFileName = "";
    BufferedReader  reader = new BufferedReader(new InputStreamReader(System.in));
    try {
      userLogFileName = reader.readLine();//read the users input
    } catch (IOException e) {
      System.out.println("error on reading user input");
      e.printStackTrace();
    }
    File file = new File(userLogFileName);
    try {
      if(!file.exists()) {//if the file does not exist
        file.createNewFile();//create a new file
      }
    } catch (IOException e) {
      System.out.println("error on creating file");
      e.printStackTrace();
    }
    fileAppender.setFile(userLogFileName);//the file must exist
    fileAppender.activateOptions();//activate the new file
    logger.error("test");
  }

}

第二个问题:每次记录事件时都应该更新文件名?这听起来像一个糟糕的表现。最好使用 aDailyRollingFileAppender以您选择的时间步长获取一个新的日志文件,并将最后一个事件的时间戳放在文件名中(默认)。

于 2012-08-22T08:41:07.980 回答