我试图在每天创建目录的目录中创建日志,但是fileHandler没有创建目录,而是其抛出异常无法获取C:\ dir_date \ Logging.txt的锁(此处dir_date不存在,我正在尝试创建登录到该目录)。我可以通过“ fileHandler”创建目录吗?
FileHandler fileTxt;
fileTxt = new FileHandler("C:\\ff\\Logging.txt");
log4J甚至可以创建目录(如果不存在),这是否可以通过fileHandler进行?
最佳答案
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
关于java - 如何通过FileHandler为Logger文件创建目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22732247/