如何实现PropertyDefiner进行回溯以访问多个属性

时间:2012-07-06 22:56:21

标签: logback

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

在开始实现它之后,我开始想知道如何访问标记中元素的 name 属性的值。我还没有看到这样做,我正在挠头。这个PropertyDefiner真的会让你为每个属性创建一个新的实现吗?为什么不只是硬编码呢?我没有在网上看到很多关于此问题的讨论。

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

我发现了discussion:基本上问了同样的问题,但没有回复。

fyi:我想自定义我的属性,因为我从数据库中提取它。我有一个帮助程序类,它在服务器启动时提取属性。这些属性因环境(开发,测试,产品等)而异。

1 个答案:

答案 0 :(得分:3)

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

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

其中myKeyYour.PropertyDefiner的属性。例如:

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

Joran,logback的配置框架,负责接线。 Joran会将 myKey 元素的值注入Your.PropertyDefiner myKey 属性中。如果您对技术细节感到好奇,请参阅implicit actionsimplicit actions in practice上的文档。