2014-03-29 64 views
2

我想在每个目录创建日志的日志中创建日志,但fileHandler不会创建目录而不是抛出异常无法获取C:\ dir_date \ Logging.txt(这里dir_date不存在,我试图创建日志到这个目录中)。我可以通过“fileHandler”创建目录吗?如何通过FileHandler创建记录器文件的目录

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

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

回答

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指定处理程序的缺省级别 (默认为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