コード例 #1
0
ファイル: GelfMessageTest.java プロジェクト: ssundell/gelfj
 @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());
 }
コード例 #2
0
ファイル: GelfMessageTest.java プロジェクト: ssundell/gelfj
  @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"));
  }
コード例 #3
0
  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;
    }
  }
コード例 #4
0
ファイル: GelfMessageTest.java プロジェクト: ssundell/gelfj
 @Test
 public void testSimpleMessage() throws Exception {
   GelfMessage message = new GelfMessage("Short", "Long", new Date(), "1");
   List<byte[]> bytes = message.toDatagrams();
   assertEquals(1, bytes.size());
 }
コード例 #5
0
ファイル: GelfMessageFactory.java プロジェクト: ping4/gelfj
  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;
  }