相关疑难解决方法(0)

配置Java FileHandler日志记录以创建不存在的目录

我正在尝试配置Java Logging API的FileHandler以将我的服务器记录到我的主目录中的文件夹中的文件,但我不想在它运行的每台机器上创建这些目录.

例如,在logging.properties文件中,我指定:

java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=%h/app-logs/MyApplication/MyApplication_%u-%g.log
Run Code Online (Sandbox Code Playgroud)

这将允许我收集MyApplication的主目录(%h)中的日志,并将它们旋转(使用%u和%g变量).

当我在log4j.properties中指定时,Log4j支持这个:

log4j.appender.rolling.File=${user.home}/app-logs/MyApplication-log4j/MyApplication.log
Run Code Online (Sandbox Code Playgroud)

看起来Logging FileHandler存在一个错误: 错误6244047:除非它们存在,否则无法指定driectorys来记录FileHandler

听起来他们不打算修复它或暴露任何属性来解决问题(除了让你的应用程序解析logging.properties或硬编码所需的路径):

看起来java.util.logging.FileHandler似乎不期望指定的目录可能不存在.通常,无论如何都必须检查这种情况.此外,它还必须检查目录写入权限.另一个问题是,如果其中一项检查未通过,该怎么办.

一种可能性是,如果用户具有适当的权限,则在路径中创建缺少的目录.另一种方法是抛出一个带有明确错误信息的IOException.后一种方法看起来更加一致.

java logging log4j

14
推荐指数
2
解决办法
4万
查看次数

标签 统计

java ×1

log4j ×1

logging ×1