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 为什么我的日志没有写入文件?_Java_Logging - Fatal编程技术网

Java 为什么我的日志没有写入文件?

Java 为什么我的日志没有写入文件?,java,logging,Java,Logging,我正在尝试在文件中写入日志,但文件为空,日志在控制台中打印。文件放置在资源文件夹项目中。为什么会有问题 import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.Logger; import java.util.logging.SimpleFormatter; private Logger logger = Logger.getLogger(MyClass.cla

我正在尝试在文件中写入日志,但文件为空,日志在控制台中打印。文件放置在资源文件夹项目中。为什么会有问题

import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

private Logger logger = Logger.getLogger(MyClass.class.getName());
private FileHandler fileHandler;

public String book(){
        try {
            fileHandler = new FileHandler("super.txt", 100000, 1, true);
            SimpleFormatter formatter = new SimpleFormatter();
            fileHandler.setFormatter(formatter);
            logger.addHandler(fileHandler);
            logger.setLevel(Level.INFO);
            logger.log(Level.INFO, "INFO");
        } catch (IOException e) {
            e.printStackTrace();
        }
        logger.log(Level.WARNING, "WARN");
        return "log is save or not )";
    }

您是否尝试过使用resource/super.txt而不是super.txt?
另外,当您完成文件处理程序时,不要忘记关闭它。

我尝试了您的代码,它工作正常。它在当前目录(即项目根目录)中创建一个日志文件。您可以将计算出的绝对路径作为文件名传递,以便在需要的地方进行日志记录

通过添加以下内容,可以禁用控制台日志记录:

logger.setUseParentHandlers(false);

如果我设置resource/super.txt,我的IDE找不到文件,但是如果set super.txt正确。好的,我在您回答后看到,可能是因为您在完成fileHandler时没有调用close?我添加了fileHandler.flush;和fileHandler.close;这并不能解决问题,即使没有记录文件,为什么控制台中会显示日志?当我添加logger.setUseParentHandlersfalse;控制台中的登录已禁用。但文件是空的。这在Ubuntu中可能是个问题?我在Ubuntu中试过了。我认为这是一个路径问题。尝试通过一个绝对路径,仅用于测试。例如:/home/[your\u user\u name]/super.txt,然后检查您的个人文件夹。我设置路径fileHandler=new fileHandler/home/[my name]/Workspace/[my project]/super.txt,100000,1,true;日志是写的!谢谢