|
@@ -13,6 +13,7 @@ import com.aliyun.openservices.aliyun.log.producer.ProducerConfig;
|
|
|
import com.aliyun.openservices.aliyun.log.producer.ProjectConfig;
|
|
|
import com.aliyun.openservices.aliyun.log.producer.errors.ProducerException;
|
|
|
import com.aliyun.openservices.log.common.LogItem;
|
|
|
+import com.tzld.longarticle.recommend.server.common.constant.LogConstants;
|
|
|
import org.joda.time.DateTime;
|
|
|
import org.joda.time.DateTimeZone;
|
|
|
import org.joda.time.format.DateTimeFormat;
|
|
@@ -103,62 +104,105 @@ public class RecommendLoghubAppender<E> extends UnsynchronizedAppenderBase<E> {
|
|
|
} catch (Exception var3) {
|
|
|
this.addError("Failed to append event.", var3);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
private void appendEvent(E eventObject) {
|
|
|
- if (eventObject instanceof LoggingEvent) {
|
|
|
- LoggingEvent event = (LoggingEvent) eventObject;
|
|
|
- List<LogItem> logItems = new ArrayList();
|
|
|
- LogItem item = new LogItem();
|
|
|
- logItems.add(item);
|
|
|
- item.SetTime((int) (event.getTimeStamp() / 1000L));
|
|
|
- if (this.formatter != null) {
|
|
|
- DateTime dateTime = new DateTime(event.getTimeStamp());
|
|
|
- item.PushBack("time", dateTime.toString(this.formatter));
|
|
|
- } else {
|
|
|
- Instant instant = Instant.ofEpochMilli(event.getTimeStamp());
|
|
|
- item.PushBack("time", this.formatter1.format(instant));
|
|
|
- }
|
|
|
-
|
|
|
- item.PushBack("level", event.getLevel().toString());
|
|
|
- item.PushBack("thread", event.getThreadName());
|
|
|
- StackTraceElement[] caller = event.getCallerData();
|
|
|
- if (caller != null && caller.length > 0) {
|
|
|
- item.PushBack("location", caller[0].toString());
|
|
|
- }
|
|
|
-
|
|
|
- String message = event.getFormattedMessage();
|
|
|
- item.PushBack("message", message);
|
|
|
- IThrowableProxy iThrowableProxy = event.getThrowableProxy();
|
|
|
- if (iThrowableProxy != null) {
|
|
|
- String throwable = this.getExceptionInfo(iThrowableProxy);
|
|
|
- throwable = throwable + this.fullDump(event.getThrowableProxy().getStackTraceElementProxyArray());
|
|
|
- item.PushBack("throwable", throwable);
|
|
|
- }
|
|
|
-
|
|
|
- if (this.encoder != null) {
|
|
|
- item.PushBack("log", new String(this.encoder.encode(eventObject)));
|
|
|
- }
|
|
|
-
|
|
|
- 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());
|
|
|
+ if (!(eventObject instanceof LoggingEvent)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ LoggingEvent event = (LoggingEvent) eventObject;
|
|
|
+ if (event.getMarker() == null) {
|
|
|
+ appendPlainEvent(eventObject);
|
|
|
+ } else if (LogConstants.MARKER_COST.equals(event.getMarker().getName())) {
|
|
|
+ appendCostEvent(event);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void appendCostEvent(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("cost", 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, "CostMonitor", 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();
|
|
|
+ LogItem item = new LogItem();
|
|
|
+ logItems.add(item);
|
|
|
+ item.SetTime((int) (event.getTimeStamp() / 1000L));
|
|
|
+ if (this.formatter != null) {
|
|
|
+ DateTime dateTime = new DateTime(event.getTimeStamp());
|
|
|
+ item.PushBack("time", dateTime.toString(this.formatter));
|
|
|
+ } else {
|
|
|
+ Instant instant = Instant.ofEpochMilli(event.getTimeStamp());
|
|
|
+ item.PushBack("time", this.formatter1.format(instant));
|
|
|
+ }
|
|
|
+
|
|
|
+ item.PushBack("level", event.getLevel().toString());
|
|
|
+ item.PushBack("thread", event.getThreadName());
|
|
|
+ StackTraceElement[] caller = event.getCallerData();
|
|
|
+ if (caller != null && caller.length > 0) {
|
|
|
+ item.PushBack("location", caller[0].toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ String message = event.getFormattedMessage();
|
|
|
+ item.PushBack("message", message);
|
|
|
+ IThrowableProxy iThrowableProxy = event.getThrowableProxy();
|
|
|
+ if (iThrowableProxy != null) {
|
|
|
+ String throwable = this.getExceptionInfo(iThrowableProxy);
|
|
|
+ throwable = throwable + this.fullDump(event.getThrowableProxy().getStackTraceElementProxyArray());
|
|
|
+ item.PushBack("throwable", throwable);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.encoder != null) {
|
|
|
+ item.PushBack("log", new String(this.encoder.encode(eventObject)));
|
|
|
+ }
|
|
|
|
|
|
- try {
|
|
|
- this.producer.send(this.projectConfig.getProject(), this.logStore, this.topic, this.source, logItems,
|
|
|
- new RecommendLoghubAppenderCallback(this, this.projectConfig.getProject(), this.logStore,
|
|
|
- this.topic, this.source, logItems));
|
|
|
- } catch (Exception var9) {
|
|
|
- this.addError("Failed to send log, project=" + this.project + ", logStore=" + this.logStore + ", topic=" + this.topic + ", source=" + this.source + ", logItem=" + logItems, var9);
|
|
|
- }
|
|
|
+ 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, this.topic, this.source, logItems,
|
|
|
+ new RecommendLoghubAppenderCallback(this, this.projectConfig.getProject(), this.logStore,
|
|
|
+ this.topic, this.source, logItems));
|
|
|
+ } catch (Exception var9) {
|
|
|
+ this.addError("Failed to send log, project=" + this.project + ", logStore=" + this.logStore + ", topic=" + this.topic + ", source=" + this.source + ", logItem=" + logItems, var9);
|
|
|
}
|
|
|
}
|
|
|
|