我试图配置Java Logging API的FileHandler以将我的服务器记录到我主目录中文件夹内的文件,但我不想创建这些目录在它运行的每台机器上。配置Java 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支持这个时候我在我的log4j.properties注明:
log4j.appender.rolling.File=${user.home}/app-logs/MyApplication-log4j/MyApplication.log
它看起来像有反对的日志文件处理器中的错误: Bug 6244047: impossible to specify driectorys to logging FileHandler unless they exist
听起来好像他们不打算修复它或暴露任何属性以解决问题(除了让应用程序解析logging.properties或硬编码所需路径):
它看起来像 java.util.logging.FileHandler不会 期望指定的目录 可能不存在。通常情况下,它必须 无论如何检查这个条件。此外,它还需要检查写入 权限的目录。另一个问题 是如果其中一个检查 没有通过该怎么办。
如果 用户具有适当的权限,则一种可能性是在路径中创建 缺少的目录。另一个 是抛出一个IOException和一个 明确的消息有什么不对。后面的方法看起来更加一致。
如果我在log4j框架内但是我使用Java Logging框架,并且没有拦截FileHandler创建调用的钩子(除了首次访问Logger时捕获异常,例如记录器.info(“test”)。 – Dougnukem 2009-08-12 05:24:31
我的意思是你可以编写自己的appender。 – 2009-08-12 05:50:26
用户没有询问Log4J。 – 2017-08-09 12:26:32