Skip to content

Commit

Permalink
Resolved issue t0xa#105: Added GelfLogRecord class. Class allows passing
Browse files Browse the repository at this point in the history
custom fields to gelf messages
  • Loading branch information
skorhone committed Sep 2, 2016
1 parent e95bc54 commit 27a623c
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 3 deletions.
24 changes: 21 additions & 3 deletions src/main/java/org/graylog2/logging/GelfHandler.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package org.graylog2.logging;

import org.graylog2.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
Expand All @@ -15,7 +13,20 @@
import java.util.HashMap;
import java.util.IllegalFormatConversionException;
import java.util.Map;
import java.util.logging.*;
import java.util.Map.Entry;
import java.util.logging.ErrorManager;
import java.util.logging.Filter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;

import org.graylog2.GelfAMQPSender;
import org.graylog2.GelfMessage;
import org.graylog2.GelfSender;
import org.graylog2.GelfSenderResult;
import org.graylog2.GelfTCPSender;
import org.graylog2.GelfUDPSender;

public class GelfHandler
extends Handler {
Expand Down Expand Up @@ -226,6 +237,13 @@ private GelfMessage makeMessage(final LogRecord record) {
String.valueOf(levelToSyslogLevel(record.getLevel())));
gelfMessage.addField("SourceClassName", record.getSourceClassName());
gelfMessage.addField("SourceMethodName", record.getSourceMethodName());

if (record instanceof GelfLogRecord) {
GelfLogRecord gelfLogRecord = (GelfLogRecord)record;
for (Entry<String, Object> field : gelfLogRecord.getFields().entrySet()) {
gelfMessage.addField(field.getKey(), field.getValue());
}
}

if (null != getOriginHost()) {
gelfMessage.setHost(getOriginHost());
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/org/graylog2/logging/GelfLogRecord.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.graylog2.logging;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.LogRecord;

public class GelfLogRecord extends LogRecord {
private static final long serialVersionUID = 43242341L;
private Map<String, Object> fields;

public GelfLogRecord(Level level, String msg) {
super(level, msg);
}

public void setField(String key, Object value) {
if (fields == null) {
fields = new LinkedHashMap<String, Object>();
}
fields.put(key, value);
}

public Object getField(String key) {
return fields != null ? fields.get(key) : null;
}

public Map<String, Object> getFields() {
if (fields == null) {
return Collections.emptyMap();
}
return Collections.unmodifiableMap(fields);
}
}

0 comments on commit 27a623c

Please sign in to comment.