io.irain.reactor.logging.utils.LogStashUtil Maven / Gradle / Ivy
The newest version!
package io.irain.reactor.logging.utils;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
import net.logstash.logback.composite.ContextJsonProvider;
import net.logstash.logback.composite.GlobalCustomFieldsJsonProvider;
import net.logstash.logback.composite.loggingevent.*;
import net.logstash.logback.stacktrace.ShortenedThrowableConverter;
/**
* LogStash 工具
*
* @author youta
*/
public class LogStashUtil {
/**
* 获取 jsonProviders
* @param context logger context
* @param customFields 自定义字段
* @return LoggingEventJsonProviders
*/
public static LoggingEventJsonProviders jsonProviders(LoggerContext context,
String customFields) {
final LoggingEventJsonProviders jsonProviders = new LoggingEventJsonProviders();
jsonProviders.addArguments(new ArgumentsJsonProvider());
jsonProviders.addContext(new ContextJsonProvider<>());
jsonProviders.addGlobalCustomFields(customFieldsJsonProvider(customFields));
jsonProviders.addLogLevel(new LogLevelJsonProvider());
jsonProviders.addLoggerName(loggerNameJsonProvider());
jsonProviders.addMdc(new MdcJsonProvider());
jsonProviders.addMessage(new MessageJsonProvider());
jsonProviders.addPattern(new LoggingEventPatternJsonProvider());
jsonProviders.addStackTrace(stackTraceJsonProvider());
jsonProviders.addThreadName(new LoggingEventThreadNameJsonProvider());
jsonProviders.addTimestamp(timestampJsonProvider());
jsonProviders.setContext(context);
return jsonProviders;
}
private static GlobalCustomFieldsJsonProvider customFieldsJsonProvider(String customFields) {
final GlobalCustomFieldsJsonProvider customFieldsJsonProvider = new GlobalCustomFieldsJsonProvider<>();
customFieldsJsonProvider.setCustomFields(customFields);
return customFieldsJsonProvider;
}
private static LoggerNameJsonProvider loggerNameJsonProvider() {
final LoggerNameJsonProvider loggerNameJsonProvider = new LoggerNameJsonProvider();
loggerNameJsonProvider.setShortenedLoggerNameLength(20);
return loggerNameJsonProvider;
}
/**
* 获取 stackTraceJsonProvider
* @return StackTraceJsonProvider
*/
private static StackTraceJsonProvider stackTraceJsonProvider() {
final StackTraceJsonProvider stackTraceJsonProvider = new StackTraceJsonProvider();
stackTraceJsonProvider.setThrowableConverter(throwableConverter());
return stackTraceJsonProvider;
}
/**
* 获取 throwableConverter
* @return ShortenedThrowableConverter
*/
public static ShortenedThrowableConverter throwableConverter() {
final ShortenedThrowableConverter throwableConverter = new ShortenedThrowableConverter();
throwableConverter.setRootCauseFirst(true);
return throwableConverter;
}
/**
* 获取 timestampJsonProvider
* @return LoggingEventFormattedTimestampJsonProvider
*/
private static LoggingEventFormattedTimestampJsonProvider timestampJsonProvider() {
final LoggingEventFormattedTimestampJsonProvider timestampJsonProvider = new LoggingEventFormattedTimestampJsonProvider();
timestampJsonProvider.setTimeZone("UTC");
return timestampJsonProvider;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy