|
@@ -115,6 +115,8 @@ public class RecommendLoghubAppender<E> extends UnsynchronizedAppenderBase<E> {
|
|
|
appendPlainEvent(eventObject);
|
|
|
} else if (LogConstants.MARKER_COST.equals(event.getMarker().getName())) {
|
|
|
appendCostEvent(event);
|
|
|
+ } else if (LogConstants.MARKER_RECALL.equals(event.getMarker().getName())) {
|
|
|
+ appendRecallEvent(event);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -153,6 +155,41 @@ public class RecommendLoghubAppender<E> extends UnsynchronizedAppenderBase<E> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void appendRecallEvent(LoggingEvent event) {
|
|
|
+ List<LogItem> logItems = new ArrayList();
|
|
|
+ LogItem item = new LogItem();
|
|
|
+ logItems.add(item);
|
|
|
+ item.SetTime((int) (event.getTimeStamp() / 1000L));
|
|
|
+
|
|
|
+ item.PushBack("thread", event.getThreadName());
|
|
|
+ Object[] args = event.getArgumentArray();
|
|
|
+ try {
|
|
|
+ item.PushBack("type", (String) args[0]);
|
|
|
+ item.PushBack("name", (String) args[1]);
|
|
|
+ item.PushBack("count", String.valueOf(args[2]));
|
|
|
+ } catch (Exception e) {
|
|
|
+ this.addError("invalid event argument ", e);
|
|
|
+ }
|
|
|
+
|
|
|
+ Optional.ofNullable(this.mdcFields).ifPresent((f) -> {
|
|
|
+ event.getMDCPropertyMap().entrySet().stream().filter((v) -> {
|
|
|
+ return Arrays.stream(f.split(",")).anyMatch((i) -> {
|
|
|
+ return i.equals(v.getKey());
|
|
|
+ });
|
|
|
+ }).forEach((map) -> {
|
|
|
+ item.PushBack((String) map.getKey(), (String) map.getValue());
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ try {
|
|
|
+ this.producer.send(this.projectConfig.getProject(), this.logStore, "ContentCountMonitor", this.source, logItems,
|
|
|
+ new RecommendLoghubAppenderCallback(this, this.projectConfig.getProject(), this.logStore,
|
|
|
+ this.topic, this.source, logItems));
|
|
|
+ } catch (Exception e) {
|
|
|
+ this.addError("Failed to send log, project=" + this.project + ", logStore=" + this.logStore + ", topic=" + this.topic + ", source=" + this.source + ", logItem=" + logItems, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void appendPlainEvent(E eventObject) {
|
|
|
LoggingEvent event = (LoggingEvent) eventObject;
|
|
|
List<LogItem> logItems = new ArrayList();
|