小编典典

如何通过FileHandler为Logger文件创建目录

java

我正在尝试在每天创建目录的目录中创建日志,但是fileHandler没有创建目录,而是其抛出异常 无法获取C:\ dir_date \
Logging.txt的锁
(此处dir_date不存在,我正在尝试创建登录到该目录)。我可以通过“ fileHandler”创建目录吗?

FileHandler fileTxt;
fileTxt = new FileHandler("C:\\ff\\Logging.txt");

log4J甚至可以创建目录(如果不存在),这是否可以通过fileHandler进行?


阅读 302

收藏
2020-11-26

共1个答案

小编典典

julFileHandler无法创建目录。根据API规范,不存在的目录是和或应视为无效目录。这意味着您的日志应改为显示在用户主目录中。在JDK-6244047中对此进行了描述:除非存在目录,否则无法指定用于记录FileHandler的目录

配置:默认情况下,每个FileHandler使用以下LogManager配置属性初始化。如果未定义属性(或具有无效值),则使用指定的默认值。

  • java.util.logging.FileHandler.level指定处理程序的默认级别(默认为Level.ALL)。

<snip>

  • java.util.logging.FileHandler.pattern指定用于生成输出文件名的模式。有关详情,请参见下文。(默认为“%h /
    java%u.log”)。

根据上面的规范措辞,如果“
FileHandler.pattern”属性指定了不可用的值,则该值无效。如果指定了无效值,则该API应该使用默认值。在这种情况下,应使用“%h /
java%u.log”。

如果需要创建目录,则可以使用LogManager
config选项或FileHandler的子类。

另请参见:JDK-6258319:FileHandler文件的异常没有%h,但是%h不存在

2020-11-26