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