
org.graylog2.log.GelfJsonAppender Maven / Gradle / Ivy
package org.graylog2.log;
import java.util.Map;
import org.apache.log4j.spi.ErrorCode;
import org.apache.log4j.spi.LoggingEvent;
import org.graylog2.GelfMessage;
import org.graylog2.GelfMessageFactory;
import org.graylog2.GelfSenderResult;
import org.json.simple.JSONValue;
/**
* A GelfAppender which will parse the given JSON message into additional fields in GELF
*
* @author Anton Yakimov
* @author Jochen Schalanda
* @author the-james-burton
*/
public class GelfJsonAppender extends GelfAppender {
@Override
protected void append(final LoggingEvent event) {
GelfMessage gelfMessage = GelfMessageFactory.makeMessage(layout, event, this);
@SuppressWarnings("unchecked")
Map fields = (Map) JSONValue.parse(event.getMessage().toString());
if (fields != null) {
for (String key : fields.keySet()) {
gelfMessage.getAdditonalFields().put(key, fields.get(key));
}
}
if (getGelfSender() == null) {
errorHandler.error("Could not send GELF message. Gelf Sender is not initialised and equals null");
} else {
GelfSenderResult gelfSenderResult = getGelfSender().sendMessage(gelfMessage);
if (!GelfSenderResult.OK.equals(gelfSenderResult)) {
errorHandler.error("Error during sending GELF message. Error code: " + gelfSenderResult.getCode() + ".",
gelfSenderResult.getException(), ErrorCode.WRITE_FAILURE);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy