【发布时间】:2009-08-12 01:59:23
【问题描述】:
我正在尝试配置Java Logging API 的FileHandler 以将我的服务器记录到我的主目录的文件夹中的一个文件中,但我不想在它运行的每台机器上都创建这些目录。
例如在我指定的 logging.properties 文件中:
java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=%h/app-logs/MyApplication/MyApplication_%u-%g.log
这将允许我在我的主目录 (%h) 中为 MyApplication 收集日志并轮换它们(使用 %u 和 %g 变量)。
当我在 log4j.properties 中指定时,Log4j 支持这一点:
log4j.appender.rolling.File=${user.home}/app-logs/MyApplication-log4j/MyApplication.log
Logging FileHandler 似乎存在错误: Bug 6244047: impossible to specify driectorys to logging FileHandler unless they exist
听起来他们不打算修复它或公开任何属性来解决问题(除了让您的应用程序解析 logging.properties 或硬编码所需的路径):
看起来像 java.util.logging.FileHandler 没有 期望指定的目录 可能不存在。通常,它必须 无论如何检查这个条件。还有,它 必须检查目录写入 权限也是如此。另一个问题 如果其中一项检查该怎么办 没有通过。
一种可能性是创建 如果路径中缺少目录 用户具有适当的权限。其他 是抛出一个 IOException 清楚的消息什么是错的。这 后一种方法看起来更一致。
【问题讨论】: