通过 xml 配置的 Logback 列表属性
Logback list properties configured via xml
我正在编写自己的布局,我希望能够将配置文件中的值列表传递给它。
我的布局代码:
public class MyPatternLayout extends PatternLayout {
private ArrayList<String> test;
public ArrayList<String> getTest() {
return test;
}
public void setTest(ArrayList<String> test) {
this.test = test;
}
@Override
public String doLayout(ILoggingEvent event) {
return test.stream().collect(Collectors.joining(", ")); //temporary, for testing purposes only
}
}
配置:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="rpost.MyPatternLayout">
<pattern>%date{HH:mm:ss.SSS} [%t] %-5p %c{40}:%L - %m%n</pattern>
<test>value 1</test>
<test>value 2</test>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
上面的示例不起作用 - 它不打印任何内容。
是否可以配置列表属性?怎么做到的?
我找到了以下解决方案:
配置(与问题相同):
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="rpost.MyPatternLayout">
<pattern>%date{HH:mm:ss.SSS} [%t] %-5p %c{40}:%L - %m%n</pattern>
<test>value 1</test>
<test>value 2</test>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
Java代码:
public class MyPatternLayout extends PatternLayout {
private List<String> test = new ArrayList<>();
public void addTest(String test) {
this.test.add(test);
}
@Override
public String doLayout(ILoggingEvent event) {
return test.stream().collect(Collectors.joining(", ")); //temporary, for testing purposes only
}
}
我正在编写自己的布局,我希望能够将配置文件中的值列表传递给它。
我的布局代码:
public class MyPatternLayout extends PatternLayout {
private ArrayList<String> test;
public ArrayList<String> getTest() {
return test;
}
public void setTest(ArrayList<String> test) {
this.test = test;
}
@Override
public String doLayout(ILoggingEvent event) {
return test.stream().collect(Collectors.joining(", ")); //temporary, for testing purposes only
}
}
配置:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="rpost.MyPatternLayout">
<pattern>%date{HH:mm:ss.SSS} [%t] %-5p %c{40}:%L - %m%n</pattern>
<test>value 1</test>
<test>value 2</test>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
上面的示例不起作用 - 它不打印任何内容。
是否可以配置列表属性?怎么做到的?
我找到了以下解决方案:
配置(与问题相同):
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="rpost.MyPatternLayout">
<pattern>%date{HH:mm:ss.SSS} [%t] %-5p %c{40}:%L - %m%n</pattern>
<test>value 1</test>
<test>value 2</test>
</layout>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
Java代码:
public class MyPatternLayout extends PatternLayout {
private List<String> test = new ArrayList<>();
public void addTest(String test) {
this.test.add(test);
}
@Override
public String doLayout(ILoggingEvent event) {
return test.stream().collect(Collectors.joining(", ")); //temporary, for testing purposes only
}
}