【发布时间】:2018-12-01 13:13:17
【问题描述】:
以下代码创建一个目录,名称为当前日期,并将日志文件存储在该目录中。但是接下来的第二天保持的日志文件也存储在同一目录中。我想每天创建一个与当前日期同名的新目录并在其中存储新的日志文件。
private static Date dir1 = new java.util.Date(System.currentTimeMillis());
private static Date dir = new java.util.Date(System.currentTimeMillis());
private static String baseDir1 = "/home/gaurav/flinklogs/";
private static String newDir1 = createDateBasedDirectory(baseDir1, dir1);
private static FileHandler fh1;
static {
try {
fh1 = new FileHandler(newDir1 + "/data.log", 0, 1, true);
} catch (IOException | SecurityException e) {
}
}
public static void main(String args[]) throws Exception {
Logger logger = Logger.getLogger("MyLog");
// This block configure the logger with handler and formatter
logger.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
// the following statement is used to log any messages
logger.info(e.getMessage());
}
public static String createDateBasedDirectory(String baseDirectory, Date argDate) {
String newDir = null;
if (baseDirectory != null && argDate != null) {
try {
String format = "yyyy-MM-dd";
DateFormat dateFormatter = new SimpleDateFormat(format);
String date = dateFormatter.format(argDate);
// check if the directory exists:
String todaysLogDir = baseDirectory + "\\" + date;
Path todaysDirectoryPath = Paths.get(todaysLogDir);
// and check if this Path exists
if (Files.exists(todaysDirectoryPath)) {
// if present, just return it in order to write (into) a log file there
return todaysDirectoryPath.toUri().toString();
} else {
newDir = baseDirectory + date;
new File(newDir).mkdir();
return newDir.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return newDir;
}
【问题讨论】:
-
你应该看看 log4j 或 logback。可以轻松配置这些框架以实现您所描述的日志轮换
-
@Rea Sand 谢谢,但我已经尝试过了...... log4j.properpties 文件和其他东西有很多问题......我只想这样做......任何解决方案??
标签: java date logging directory logfile