如何使用java util logging框架以特定格式为每条记录创建日志文件

我想使用java util logging以下面的格式为每个请求创建日志文件。

YYYYMMDD_HHMMSS.log 

有人请让我知道如何使用java util logging实现这一目标?

FileHandler不支持从LogManager按日期和时间生成文件名。

如果要在启动时生成文件名,可以inheritanceFileHandler并创建静态方法以使用SimpleDateFormat生成文件名。 LogManager支持“config”选项,该选项还允许您安装自定义代码以设置和安装FileHandler。

 public class RollingFileHandler extends FileHandler { public RollingFileHandler() throws IOException { super(fileName(), 0, 1, true); } private static String fileName() { return new SimpleDateFormat("'%h'yyyyMMdd_HHmmss").format(new Date(System.currentTimeMillis())); } } 

如果要为每个LogRecord生成文件名,则必须创建一个自定义处理程序 ,该处理程序将在每次发布时创建和关闭FileHandler。

 public class DatedFileHandler extends Handler { @Override public synchronized void publish(LogRecord r) { if (isLoggable(r)) { try { FileHandler h = new FileHandler(fileName(r), 0, 1, true); try { h.setLevel(getLevel()); h.setEncoding(getEncoding()); h.setFilter(getFilter()); h.setFormatter(getFormatter()); h.setErrorManager(getErrorManager()); h.publish(r); } finally { h.close(); } } catch (IOException | SecurityException jm) { this.reportError(null, jm, ErrorManager.WRITE_FAILURE); } } } @Override public void flush() { } @Override public void close() { super.setLevel(Level.OFF); } private String fileName(LogRecord r) { return new SimpleDateFormat("'%h'yyyyMMdd_HHmmss").format(new Date(r.getMillis())); } }