我试图在每天创建每个目录的目录中创建日志,但是fileHandler没有创建目录,而是抛出异常无法锁定C:\ dir_date \ Logging.txt (这里dir_date不存在,我正在尝试创建登录到此目录)。我可以通过“fileHandler”创建目录吗?
FileHandler fileTxt;
fileTxt = new FileHandler("C:\\ff\\Logging.txt");
如果不存在,log4J可以创建偶数目录,这不是通过fileHandler吗?
答案 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