2

我想在我的 logback.xml 配置文件中定义一些属性,并看到通过实现PropertyDefiner是一种以可定制方式设置属性的好方法。

在开始实现它之后,我开始想知道如何访问标签内元素的名称属性的值。反正我看不到这样做,我在挠头。这个 PropertyDefiner 真的会让你为每个属性创建一个新的实现吗?为什么不直接硬编码呢?我在网上没有看到太多关于这个的讨论。

我希望我只是没有看到它,并且 stackoverflow 的大脑可以帮助我。有谁知道如何做到这一点?谢谢!

我发现了这个讨论:问了基本上相同的问题,但没有返回答案。

仅供参考:我想自定义获取属性的方式,因为我是从数据库中提取属性的。我有一个助手类,它在服务器启动时拉入属性。这些属性因环境(开发、测试、产品等)而异

4

1 回答 1

3

从 logback 版本 1.0.6 开始,无法直接访问name属性的值。但是,没有什么能阻止您在您选择的属性中传递name属性的值。例子:

<define name="rootLevel" class="Your.PropertyDefiner">
  <myKey>rootLevel</myKey>
</define>

myKey的属性在哪里Your.PropertyDefiner。例如:

class Your.PropertyDefiner implements PropertyDefiner {   
  String myKey; 
  public void setMyKey(String k) {
    this.myKey= k;   
  }
  public String getPropertyValue() {
    return ...   
  }  
}

logback 的配置框架 Joran 负责接线。Joran 会将myKey元素的值注入Your.PropertyDefiner. 如果您对技术细节感到好奇,请参阅有关隐式操作实践中的隐式操作的文档。

于 2012-07-08T22:09:18.580 回答