1

我有一个基本功能,允许用户远程应用对我的应用程序中的日志文件的更改。有些日志是使用 java.util.logging 属性文件配置的,有些是使用 log4j/log4cplus 样式的属性文件配置的。我想对用户尝试应用的属性进行一些基本验证。即,我想保证以下几点:

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

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

4

2 回答 2

1

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

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

于 2009-11-14T00:45:35.600 回答
0

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

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

于 2009-11-14T02:10:17.867 回答