3

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

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

如果不存在,log4J 甚至可以创建目录,这不是可以通过 fileHandler 吗?

4

1 回答 1

6

julFileHandler 无法创建目录。根据 API 规范,不存在的目录被或应该被视为无效。这意味着您的日志应该出现在用户主目录中。这在JDK-6244047 中描述:不可能指定目录来记录 FileHandler 除非它们存在

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

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

<snip>

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

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

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

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

于 2014-04-01T20:52:13.727 回答