@Test public void testSendLongMessage() throws Exception { String longString = "01234567890123456789 "; for (int i = 0; i < 15; i++) { longString += longString; } GelfMessage message = new GelfMessage("Long", longString, new Date(), "1"); List<byte[]> bytes2 = message.toDatagrams(); assertEquals(2, bytes2.size()); }
@Test public void testAdditionalFieldsIds() throws Exception { GelfMessage message = new GelfMessage("Short", "Long", new Date(), "1"); message.addField("id", "LOLCAT").addField("_id", "typos in my closet"); String data = message.toJson(); Map resultingMap = (Map) JSONValue.parse(data); assertNull(resultingMap.get("_id")); assertNotNull(resultingMap.get("__id")); }
public boolean sendMessage(GelfMessage message) { if (shutdown || !message.isValid()) { return false; } try { // reconnect if necessary if (socket == null) { socket = new Socket(host, port); } socket.getOutputStream().write(message.toTCPBuffer().array()); return true; } catch (IOException e) { // if an error occours, signal failure socket = null; return false; } }
@Test public void testSimpleMessage() throws Exception { GelfMessage message = new GelfMessage("Short", "Long", new Date(), "1"); List<byte[]> bytes = message.toDatagrams(); assertEquals(1, bytes.size()); }
public static final GelfMessage makeMessage(LoggingEvent event, GelfMessageProvider provider) { long timeStamp = Log4jVersionChecker.getTimeStamp(event); Level level = event.getLevel(); String file = null; String lineNumber = null; if (provider.isIncludeLocation()) { LocationInfo locationInformation = event.getLocationInformation(); file = locationInformation.getFileName(); lineNumber = locationInformation.getLineNumber(); } String renderedMessage = event.getRenderedMessage(); String shortMessage; if (renderedMessage == null) { renderedMessage = ""; } if (renderedMessage.length() > MAX_SHORT_MESSAGE_LENGTH) { shortMessage = renderedMessage.substring(0, MAX_SHORT_MESSAGE_LENGTH - 1); } else { shortMessage = renderedMessage; } if (provider.isExtractStacktrace()) { ThrowableInformation throwableInformation = event.getThrowableInformation(); if (throwableInformation != null) { renderedMessage += "\n\r" + extractStacktrace(throwableInformation); } } GelfMessage gelfMessage = new GelfMessage( shortMessage, renderedMessage, timeStamp, String.valueOf(level.getSyslogEquivalent()), lineNumber, file); if (provider.getOriginHost() != null) { gelfMessage.setHost(provider.getOriginHost()); } if (provider.getFacility() != null) { gelfMessage.setFacility(provider.getFacility()); } Map<String, String> fields = provider.getFields(); for (Map.Entry<String, String> entry : fields.entrySet()) { if (entry.getKey().equals(ORIGIN_HOST_KEY) && gelfMessage.getHost() == null) { gelfMessage.setHost(fields.get(ORIGIN_HOST_KEY)); } else { gelfMessage.addField(entry.getKey(), entry.getValue()); } } if (provider.isAddExtendedInformation()) { gelfMessage.addField(THREAD_NAME, event.getThreadName()); gelfMessage.addField(LOGGER_NAME, event.getLoggerName()); gelfMessage.addField(JAVA_TIMESTAMP, Long.toString(gelfMessage.getJavaTimestamp())); // Get MDC and add a GELF field for each key/value pair Map<String, Object> mdc = MDC.getContext(); if (mdc != null) { for (Map.Entry<String, Object> entry : mdc.entrySet()) { gelfMessage.addField(entry.getKey(), entry.getValue().toString()); } } // Get NDC and add a GELF field String ndc = event.getNDC(); if (ndc != null) { gelfMessage.addField(LOGGER_NDC, ndc); } } return gelfMessage; }