使用自定义附加程序添加到单例列表中,您可以使用它来访问所有不匹配项。
CustomAppender.java
public class CustomAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
@Override
protected void append(ILoggingEvent eventObject) {
if(eventObject.getLevel() == Level.WARN){
{
KPLogHolder.addData(eventObject.getMessage);
}
}
}
Run Code Online (Sandbox Code Playgroud)
用于保存消息的单例 Java 类KPLogHolder.java
public class KPLogHolder {
private static List<String> holder;
public static List<String> getLog(){
if(holder== null){
return new ArrayList<String>();
}
return holder;
}
public static void addData(String item){
getLog().add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
并访问消息。
public class KPTest{
@Test
public void testLog(){
LOG.warn("Warning!!!!");
for(String str: KPLogHolder.getLog()){
System.out.println(str);
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我没有使用同步,您需要实现这些同步,因为 ArrayList 未同步。不知道为什么有这个要求,但要小心。大多数情况下,这些都会导致错误的实现,在某些情况下,它会导致您的服务器瘫痪。如果没有正确实施。
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |