我正在尝试在每天创建目录的目录中创建日志,但是fileHandler没有创建目录,而是其抛出异常 无法获取C:\ dir_date \ Logging.txt的锁 (此处dir_date不存在,我正在尝试创建登录到该目录)。我可以通过“ fileHandler”创建目录吗?
FileHandler fileTxt; fileTxt = new FileHandler("C:\\ff\\Logging.txt");
log4J甚至可以创建目录(如果不存在),这是否可以通过fileHandler进行?
julFileHandler无法创建目录。根据API规范,不存在的目录是和或应视为无效目录。这意味着您的日志应改为显示在用户主目录中。在JDK-6244047中对此进行了描述:除非存在目录,否则无法指定用于记录FileHandler的目录:
配置:默认情况下,每个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”。
配置:默认情况下,每个FileHandler使用以下LogManager配置属性初始化。如果未定义属性(或具有无效值),则使用指定的默认值。
<snip>
根据上面的规范措辞,如果“ FileHandler.pattern”属性指定了不可用的值,则该值无效。如果指定了无效值,则该API应该使用默认值。在这种情况下,应使用“%h / java%u.log”。
如果需要创建目录,则可以使用LogManager config选项或FileHandler的子类。
另请参见:JDK-6258319:FileHandler文件的异常没有%h,但是%h不存在