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;日志是写的!谢谢