logback-more-appenders icon indicating copy to clipboard operation
logback-more-appenders copied to clipboard

DataFluentAppender generates new timestamp instead of event's time

Open discorpsee opened this issue 2 years ago • 1 comments

Why does DataFluentAppender generates brand new timestamp?

Probles arises when AsyncAppender thread not as fast as we desire. With some network delay or queue problems elastic's timestamp becames significantly later then real log event.

protected void append(E event) {
    Map<String, Object> data = createData(event);

    if (isUseEventTime()) {
        fluentLogger.log(getLabel() == null ? getTag() : getLabel(), data, System.currentTimeMillis() / 1000);
    } else {
        fluentLogger.log(getLabel() == null ? getTag() : getLabel(), data);
    }
}

I can create PR with changes like that, is it useful for this repo?

protected void append(E event) {
    Map<String, Object> data = createData(event);

    if (isUseEventTime()) {
        fluentLogger.log(getLabel() == null ? getTag() : getLabel(), data, getTimestamp(event) / 1000);
    } else {
        fluentLogger.log(getLabel() == null ? getTag() : getLabel(), data);
    }
}

protected long getTimestamp(E event) {
    if (event instanceof ILoggingEvent) {
        return ((ILoggingEvent) event).getTimeStamp();
    }
    return System.currentTimeMillis();
}
  • it looses milliseconds cause of division, why so?

discorpsee avatar May 28 '22 21:05 discorpsee

@discorpsee I think, you are right. That PR would be great! Thanks!

sndyuk avatar May 29 '22 02:05 sndyuk