【问题标题】:How to create directories for Logger files through FileHandler如何通过 FileHandler 为 Logger 文件创建目录
【发布时间】:2014-03-29 14:19:04
【问题描述】:

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

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

log4J 可以创建即使不存在的目录,这不是可以通过 fileHandler 吗?

【问题讨论】:

    标签: java logging filehandler


    【解决方案1】:

    j.u.l.FileHandler 不能创建目录。根据 API 规范,不存在的目录被或应该被视为无效。这意味着您的日志应该出现在用户主目录中。这在JDK-6244047: impossible to specify directories to logging FileHandler unless they exist 中有描述:

    配置:默认情况下,每个 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: No exception with FileHandler file has %h, but %h does not exist

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多