Java Vaadin Util记录器异常

Java Vaadin Util记录器异常,java,exception,logging,vaadin,Java,Exception,Logging,Vaadin,首先,像这样的记录器可以在没有vaadin框架的其他项目中正常工作 我将记录器嵌入到一个单独的类中,如下所示,但对于vaadin,它将不起作用: Level cfgLevel = getConfigLevel(); // create logger this.logger = Logger.getLogger(GZ_IOLogger.class.getName()); this.logger.setLevel(cfgLevel); // create

首先,像这样的记录器可以在没有vaadin框架的其他项目中正常工作

我将记录器嵌入到一个单独的类中,如下所示,但对于vaadin,它将不起作用:

    Level cfgLevel = getConfigLevel();

    // create logger
    this.logger = Logger.getLogger(GZ_IOLogger.class.getName());
    this.logger.setLevel(cfgLevel);

    // create console handler for console outputs
    ConsoleHandler cHandler = new ConsoleHandler();
    cHandler.setLevel(cfgLevel);
    this.logger.addHandler(cHandler);

    // create filehandler for fileoutputs
    try {
        //logger path in web-inf
        String loggerPath = "logs/logs.txt";

        //get vaadin resource from web-inf
        File file = this.session.getResource(loggerPath);
        //!exception line!
        FileHandler handler = new FileHandler(file.getAbsolutePath());
        this.logger.addHandler(handler);
    } catch (SecurityException e) {
        System.err.println("Logger-Exception: " + e.getMessage());
        e.printStackTrace();
    } catch (IOException e) {
        System.err.println("Logger-Exception: " + e.getMessage());
        e.printStackTrace();
    }
我总是会遇到以下例外情况:

Logger-Exception: C:\Users\XXX\IdeaProjects\Backend\out\artifacts\Backend_war_exploded\WEB-INF\log\logs.txt.lck
java.nio.file.NoSuchFileException: C:\Users\XXX\IdeaProjects\Backend\out\artifacts\Backend_war_exploded\WEB-INF\log\logs.txt.lck
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
    at sun.nio.fs.WindowsFileSystemProvider.newFileChannel(WindowsFileSystemProvider.java:115)
    at java.nio.channels.FileChannel.open(FileChannel.java:287)
    at java.nio.channels.FileChannel.open(FileChannel.java:335)
    at java.util.logging.FileHandler.openFiles(FileHandler.java:459)
    at java.util.logging.FileHandler.<init>(FileHandler.java:292)
    at io.GZ_IOLogger.initLogger(GZ_IOLogger.java:57)
...
记录器异常:C:\Users\XXX\IdeaProjects\Backend\out\artifacts\Backend\u war\u exploded\WEB-INF\log\logs.txt.lck
java.nio.file.NoSuchFileException:C:\Users\XXX\IdeaProjects\Backend\out\artifacts\Backend\u war\u explodesd\WEB-INF\log\logs.txt.lck
位于sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
位于sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
位于sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
位于sun.nio.fs.WindowsFileSystemProvider.newFileChannel(WindowsFileSystemProvider.java:115)
位于java.nio.channels.FileChannel.open(FileChannel.java:287)
位于java.nio.channels.FileChannel.open(FileChannel.java:335)
位于java.util.logging.FileHandler.openFiles(FileHandler.java:459)
位于java.util.logging.FileHandler。(FileHandler.java:292)
位于io.GZ_IOLogger.initLogger(GZ_IOLogger.java:57)
...

我认为可能不可能创建这些文件,记录器会尝试创建一个锁定的文件。对于伐木工人有解决方案吗?我还尝试使用像C:/test这样的绝对路径,但它也不起作用。

在创建FileHandler之前,确保所有目录都存在。如果目录不存在,FileHandler将不会创建目录

File file = this.session.getResource(loggerPath);
file.getParentFile().mkdirs();
//!exception line!
FileHandler handler = new FileHandler(file.getAbsolutePath());

执行此代码的Java的确切版本是什么?目录和文件可用。