Skip to content

Commit

Permalink
Small changes on SyslogEventHandler
Browse files Browse the repository at this point in the history
* Use log level "debug" for debugging messages
* Use Tools#getUTCTimestampWithMilliseconds(long) instead of reimplementing its behaviour
  • Loading branch information
joschi committed Nov 20, 2011
1 parent 594c86b commit 7d059c1
Showing 1 changed file with 15 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/**
* Copyright 2010, 2011 Lennart Koopmann <[email protected]>
*
*
* This file is part of Graylog2.
*
* Graylog2 is free software: you can redistribute it and/or modify
Expand Down Expand Up @@ -29,24 +29,23 @@
import org.productivity.java.syslog4j.server.SyslogServerSessionlessEventHandlerIF;

import java.net.SocketAddress;
import org.joda.time.DateTime;

/**
* SyslogEventHandler.java: May 17, 2010 8:58:18 PM
*
* <p/>
* Handles incoming Syslog messages
*
* @author Lennart Koopmann <[email protected]>
*/
public class SyslogEventHandler implements SyslogServerSessionlessEventHandlerIF {

private static final Logger LOG = Logger.getLogger(SyslogEventHandler.class);

/**
* Handle an incoming syslog message: Output if in debug mode, store in MongoDB, ReceiveHooks
*
* @param syslogServer The syslog server
* @param event The event to handle
* @param event The event to handle
*/
public void event(SyslogServerIF syslogServer, SocketAddress socketAddress, SyslogServerEventIF event) {

Expand All @@ -55,34 +54,23 @@ public void event(SyslogServerIF syslogServer, SocketAddress socketAddress, Sysl
// Print out debug information.
if (event instanceof GraylogSyslogServerEvent) {
GraylogSyslogServerEvent glEvent = (GraylogSyslogServerEvent) event;
LOG.info("Received syslog message (via AMQP): " + event.getMessage());
LOG.info("AMQP queue: " + glEvent.getAmqpReceiverQueue());
LOG.debug("Received syslog message (via AMQP): " + event.getMessage());
LOG.debug("AMQP queue: " + glEvent.getAmqpReceiverQueue());

gelf.addAdditionalData("_amqp_queue", glEvent.getAmqpReceiverQueue());
} else {
LOG.info("Received syslog message: " + event.getMessage());
LOG.debug("Received syslog message: " + event.getMessage());
}
LOG.info("Host: " + event.getHost());
LOG.info("Facility: " + event.getFacility() + " (" + Tools.syslogFacilityToReadable(event.getFacility()) + ")");
LOG.info("Level: " + event.getLevel() + " (" + Tools.syslogLevelToReadable(event.getLevel()) + ")");
LOG.info("Raw: " + new String(event.getRaw()));

// Use JodaTime to easy get the milliseconds and construct a float. (This looks dumb but is the easiest and safest way)
try {
DateTime jt = new DateTime(event.getDate().getTime());
String unixTime = String.valueOf(event.getDate().getTime()/1000L);
String millis = String.valueOf(jt.getMillisOfSecond());
Double milliSecondTime = new Double(unixTime + "." + millis);
gelf.setCreatedAt(milliSecondTime.doubleValue());
} catch (NumberFormatException e) {
LOG.error("Could not determine milliseconds of syslog message. (NumberFormatException)");
}

LOG.debug("Host: " + event.getHost());
LOG.debug("Facility: " + event.getFacility() + " (" + Tools.syslogFacilityToReadable(event.getFacility()) + ")");
LOG.debug("Level: " + event.getLevel() + " (" + Tools.syslogLevelToReadable(event.getLevel()) + ")");
LOG.debug("Raw: " + new String(event.getRaw()));

gelf.setCreatedAt(Tools.getUTCTimestampWithMilliseconds(event.getDate().getTime()));
gelf.setConvertedFromSyslog(true);
gelf.setVersion("0");
gelf.setShortMessage(event.getMessage());

gelf.setHost(event.getHost());
gelf.setFacility(Tools.syslogFacilityToReadable(event.getFacility()));
gelf.setLevel(event.getLevel());
Expand All @@ -91,8 +79,8 @@ public void event(SyslogServerIF syslogServer, SocketAddress socketAddress, Sysl
try {
SimpleGELFClientHandler gelfHandler = new SimpleGELFClientHandler(gelf);
gelfHandler.handle();
} catch ( Exception e ) {
// I don't care
} catch (Exception e) {
LOG.debug("Couldn't process message with GELF handler", e);
}
}

Expand Down

0 comments on commit 7d059c1

Please sign in to comment.