All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sap.hcp.cf.logback.encoder.BaseFieldSupplier Maven / Gradle / Ivy

package com.sap.hcp.cf.logback.encoder;

import java.time.Instant;
import java.util.HashMap;
import java.util.Map;

import com.sap.hcp.cf.logback.converter.api.LogbackContextFieldSupplier;
import com.sap.hcp.cf.logging.common.Defaults;
import com.sap.hcp.cf.logging.common.Fields;
import com.sap.hcp.cf.logging.common.Markers;

import ch.qos.logback.classic.spi.ILoggingEvent;

public class BaseFieldSupplier implements LogbackContextFieldSupplier {

    @Override
    public Map map(ILoggingEvent event) {
        Map fields = new HashMap<>(6);
        fields.put(Fields.WRITTEN_AT, Instant.ofEpochMilli(event.getTimeStamp()).toString());
        fields.put(Fields.WRITTEN_TS, now());
        fields.put(Fields.TYPE, isRequestLog(event) ? Defaults.TYPE_REQUEST : Defaults.TYPE_LOG);
        fields.put(Fields.LEVEL, String.valueOf(event.getLevel()));
        fields.put(Fields.LOGGER, event.getLoggerName());
        fields.put(Fields.THREAD, event.getThreadName());
        if (!isRequestLog(event)) {
            fields.put(Fields.MSG, event.getFormattedMessage());
        }
        return fields;
    }

    private String now() {
        Instant now = Instant.now();
        long timestamp = now.getEpochSecond() * 1_000_000_000L + now.getNano();
        return String.valueOf(timestamp);
    }

    private boolean isRequestLog(ILoggingEvent event) {
        return Markers.REQUEST_MARKER.equals(event.getMarker());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy