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

时间:2014-03-29 14:19:05

标签: java logging filehandler

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

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

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

1 个答案:

答案 0 :(得分:4)

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

  

配置:默认情况下,每个FileHandler都使用   遵循LogManager配置属性。如果属性不是   定义(或具有无效值)然后指定默认值   使用。

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

<snip>

     
      
  • java.util.logging.FileHandler.pattern指定模式     生成输出文件名。请参阅下文了解详情。     (默认为&#34;%h / java%u.log&#34;)。
  •   
     

根据上面的规范措辞,如果&#34; FileHandler.pattern&#34;属性   指定不可用的值,然后它无效。如果值无效   指定后,API应该使用默认值。在   这种情况&#34;%h / java%u.log&#34;应该使用。

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

另请参阅:JDK-6258319: No exception with FileHandler file has %h, but %h does not exist

相关问题