Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
如何使用java util日志框架以特定格式为每条记录创建日志文件_Java_Logging_Java.util.logging - Fatal编程技术网

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

如何使用java util日志框架以特定格式为每条记录创建日志文件,java,logging,java.util.logging,Java,Logging,Java.util.logging,我想使用JavaUtil日志记录按以下格式创建每个请求的日志文件 YYYYMMDD_HHMMSS.log 任何人请告诉我如何使用java util日志实现此功能?不支持从LogManager生成文件名 如果要在启动时生成文件名,可以对FileHandler进行子类化,并创建一个静态方法,使用。支持“配置”选项,该选项还允许您安装自定义代码来设置和安装FileHandler public class RollingFileHandler extends FileHandler { pu

我想使用JavaUtil日志记录按以下格式创建每个请求的日志文件

YYYYMMDD_HHMMSS.log
任何人请告诉我如何使用java util日志实现此功能?

不支持从LogManager生成文件名

如果要在启动时生成文件名,可以对FileHandler进行子类化,并创建一个静态方法,使用。支持“配置”选项,该选项还允许您安装自定义代码来设置和安装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()));
    }
}
如果要为每个日志记录生成一个文件名,则必须创建一个自定义文件名,该自定义文件名将在每次发布时创建并关闭一个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()));
    }
}

根据哪个要求?您是否有使用日志记录可以看到的现有代码?我有一个独立的SE应用程序。每次执行该应用程序时,我都希望根据时间格式创建不同的日志文件。