0
所以,我创建基于自定义的logback布局:复杂的logback自定义布局属性
public class MyCustomLayout extends LayoutBase<ILoggingEvent> {
private String mySimpleArg;
public void setMySimpleArg(String mySimpleArg) {
this.mySimpleArg = mySimpleArg;
}
public String doLayout(IlogginEvent iLoggingEvent) {
//generate log in my format and use mySimpleArg
}
}
,在我logback.xml我有
<appender ...>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="path.to.MyCustomLayout">
<mySimpleArg>some text</mySimpleArg>
</layout>
</encoder>
...
</appender>
现在的问题是,我也需要从我的XML配置文件中读取更复杂的参数,并且我无法在logback文档和Google上找到任何信息。具体而言,我需要像
public class MyCustomLayout extends LayoutBase<ILoggingEvent> {
private String mySimpleArg;
//the Pair here is just to show I need something key -> value based
private Pair<String, Object>[] myComplexArray;
public void setMySimpleArg(String mySimpleArg) {
this.mySimpleArg = mySimpleArg;
}
public void setMyComplexArray(Pair<String, Object>[] myComplexArray) {
this.myComplexArray = myComplexArray;
}
public String doLayout(IlogginEvent iLoggingEvent) {
//generate log in my format and use mySimpleArg and myComplexArray
}
}
和logback.xml
<appender ...>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="path.to.MyCustomLayout">
<mySimpleArg>some text</mySimpleArg>
<myComplexArray>
<myComplexElement key="key1" value="value1"/>
<myComplexElement key="key2" value=5/>
</myComplexArray>
</layout>
</encoder>
...
</appender>
哇,谢谢你的答案。他们肯定应该把它写入文档。 – Kamil