如何验证Java日志记录属性文件?

时间:2009-11-14 00:23:36

标签: java configuration logging log4j java.util.logging

我有一个基本工具,允许用户远程将更改应用到我的应用程序中的日志文件。某些日志是使用java.util.logging属性文件配置的,有些是使用log4j / log4cplus样式的属性文件配置的。我想对用户尝试应用的属性进行一些基本验证。也就是说,我想保证以下内容:

  • 每个logging.properties文件必须始终至少包含根记录器/日志记录级别
  • 必须将记录器/级别设置为有效值。也就是说,他们不应该设置.level = GIBBERISH或类似的东西。
  • 我可能会允许他们设置MaxFileSize和MaxBackupIndex(log4j),以及.limit和.count属性(java.util.logging)。

实现这一目标的最佳方法是什么?我显然可以循环遍历Properties对象中的键和值,并在硬编码的Map或其他一些数据结构中查找它们的值,这些数据结构告诉我们有效的属性是什么,但我正在尝试提出一个解决方案。比那更优雅。

2 个答案:

答案 0 :(得分:1)

对属性文件运行任何一组部分语法检查的问题是,除非您捕获日志记录系统可接受的每个部分变体,否则它们将始终不合适,在这种情况下,您将重新创建一部分伐木系统。无论您选择哪种属性来验证,都必须提供其他方式来提交损坏的文件。

为什么不根据输入文件创建一个额外的(临时的,仅用于检查的范围)记录器对象,而不是测试单个属性,并检测它是否抛出错误?

答案 1 :(得分:0)

“优雅”的解决方案是编写一个基于规则的引擎来检查名称 - 值对的集合。但IMO对于这个用例来说完全超出了顶级......除非检查比我想象的要复杂得多。

我会说在这种情况下,简单(不优雅)的解决方案是最好的。