95 lines
1.8 KiB
Markdown
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>
|
||
|
|
||
|
|
||
|
```
|