Obsidian/Recognition/Programing/Java/Logger Appender Costom.md

95 lines
1.8 KiB
Markdown

#Java #logback
#### CaptureAppender.java
```java
package kr.gmtc.gw.standstatus.logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.spi.FilterReply;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CaptureAppender extends AppenderBase<ILoggingEvent> {
/**
* Guard flag to prevent recursive calling of the appender.
*/
boolean guard;
/**
* Flag indicates that the appender is collecting the contents and storing them away
*/
private boolean collect;
/**
* STorage location for captured HTTP output.
*/
private List<String> capturedOutput = new ArrayList<>();
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
protected synchronized void append(ILoggingEvent evt)
{
if (guard) {
return;
}
try {
guard = true;
if (!this.started) {
return;
}
if (getFilterChainDecision(evt) == FilterReply.DENY) {
return;
}
capturedOutput.add(evt.getMessage());
} finally {
guard = false;
}
}
public void startCollecting() {
this.collect = true;
this.capturedOutput.clear();
}
public List<String> stopCollecting() {
this.collect = false;
List<String> immutaList = new ArrayList<>();
immutaList.addAll(this.capturedOutput);
immutaList = Collections.unmodifiableList(immutaList);
return immutaList;
}
}
```
#### logback-spring.xml
```xml
https://backtony.tistory.com/33
<appender name="Capture" class=".....CaptureAppender">
...
</appender>
```