Created
April 12, 2015 05:35
-
-
Save happysundar/e249714071b22cc27f92 to your computer and use it in GitHub Desktop.
Logstash appender for dropwizard : this generates a logstash compatible log file that can be synced using the logstash-forwarder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- type: logstashfile | |
currentLogFilename: /melodis/logs/UserDataStorage/logstash/logstash.log | |
threshold: ALL | |
archive: true | |
archivedLogFilenamePattern: /melodis/logs/UserDataStorage/logstash/logstash-%d.log | |
archivedFileCount: 48 | |
timeZone: UTC |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ch.qos.logback.classic.LoggerContext; | |
import ch.qos.logback.classic.spi.ILoggingEvent; | |
import ch.qos.logback.core.Appender; | |
import ch.qos.logback.core.FileAppender; | |
import ch.qos.logback.core.Layout; | |
import com.fasterxml.jackson.annotation.JsonTypeName; | |
import io.dropwizard.logging.FileAppenderFactory; | |
import net.logstash.logback.encoder.LogstashEncoder; | |
@JsonTypeName("logstashfile") | |
public class LogstashAppender extends FileAppenderFactory | |
{ | |
@Override | |
public Appender<ILoggingEvent> build (final LoggerContext context, final String applicationName, final Layout<ILoggingEvent> layout) | |
{ | |
final FileAppender<ILoggingEvent> appender = buildAppender( context ); | |
appender.setName( "logstashfile-appender" ); | |
appender.setPrudent( false ); | |
appender.setAppend( true ); | |
appender.setContext( context ); | |
final LogstashEncoder logstashEncoder = new LogstashEncoder(); | |
logstashEncoder.setIncludeCallerInfo( true ); | |
logstashEncoder.setIncludeMdc( true ); | |
logstashEncoder.setTimeZone( super.getTimeZone().getID() ); | |
logstashEncoder.setContext( context ); | |
logstashEncoder.setIncludeContext( true ); | |
logstashEncoder.setImmediateFlush( true ); | |
logstashEncoder.start(); | |
appender.setEncoder( logstashEncoder ); | |
appender.setFile( super.getCurrentLogFilename() ); | |
appender.setPrudent(false); | |
addThresholdFilter(appender, threshold); | |
appender.stop(); | |
appender.start(); | |
return wrapAsync( appender ); | |
} | |
@Override | |
protected FileAppender<ILoggingEvent> buildAppender (final LoggerContext context) | |
{ | |
return super.buildAppender( context ); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment