我想在我的logback.xml配置文件中定义一些属性,并看到通过实现PropertyDefiner是一种以可自定义方式设置属性的好方法。
在开始实现它之后,我开始想知道如何访问标记中元素的 name 属性的值。我还没有看到这样做,我正在挠头。这个PropertyDefiner真的会让你为每个属性创建一个新的实现吗?为什么不只是硬编码呢?我没有在网上看到很多关于此问题的讨论。
我希望我没有看到它,stackoverflow的大脑可以帮助我。有谁知道如何做到这一点?谢谢!
我发现了discussion:基本上问了同样的问题,但没有回复。
fyi:我想自定义我的属性,因为我从数据库中提取它。我有一个帮助程序类,它在服务器启动时提取属性。这些属性因环境(开发,测试,产品等)而异。
答案 0 :(得分: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 ...
}
}
Joran,logback的配置框架,负责接线。 Joran会将 myKey 元素的值注入Your.PropertyDefiner
的 myKey 属性中。如果您对技术细节感到好奇,请参阅implicit actions和implicit actions in practice上的文档。