package com.wikia.dropwizard.logstash.appender; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.core.Appender; import ch.qos.logback.core.net.SyslogConstants; import com.fasterxml.jackson.annotation.JsonTypeName; import io.dropwizard.logging.async.AsyncAppenderFactory; import io.dropwizard.logging.filter.LevelFilterFactory; import io.dropwizard.logging.layout.LayoutFactory; import net.logstash.logback.appender.LogstashSocketAppender; @JsonTypeName("logstash-socket") public class LogstashSocketAppenderFactory extends AbstractLogstashAppenderFactory { public LogstashSocketAppenderFactory() { port = SyslogConstants.SYSLOG_PORT; } @Override public Appender build(LoggerContext context, String s, LayoutFactory layoutFactory, LevelFilterFactory levelFilterFactory, AsyncAppenderFactory asyncAppenderFactory) { final LogstashSocketAppender appender = new LogstashSocketAppender(); appender.setName("logstash-socket-appender"); appender.setContext(context); appender.setHost(host); appender.setPort(port); appender.setIncludeCallerData(includeCallerData); appender.setIncludeMdc(includeMdc); appender.setIncludeContext(includeContext); if (customFields != null) { LogstashAppenderFactoryHelper .getCustomFieldsFromHashMap(customFields) .ifPresent(appender::setCustomFields); } if (fieldNames != null) { appender.setFieldNames(LogstashAppenderFactoryHelper.getFieldNamesFromHashMap(fieldNames)); } appender.addFilter(levelFilterFactory.build(threshold)); appender.start(); return wrapAsync(appender, asyncAppenderFactory); } }