예제 #1
0
  public synchronized LogEvent log(LogEvent ev) {
    if (socket != null && ev.getTag() != null && tags.contains(ev.getTag())) {
      int facility = cfg.getInt(ev.getTag() + ".facility", defaultFacility);
      int severity = cfg.getInt(ev.getTag() + ".severity", defaultSeverity);
      int priority = (facility << 3) | severity;

      StringBuilder sb = new StringBuilder();
      sb.append('<');
      sb.append(Integer.toString(priority));
      sb.append('>');
      if (prefix != null) {
        sb.append(prefix);
        sb.append(' ');
      }
      sb.append(ev.getRealm());
      sb.append(' ');
      sb.append(ev.getTag());
      sb.append(" - ");
      synchronized (ev.getPayLoad()) {
        Iterator iter = ev.getPayLoad().iterator();
        for (int i = 0; iter.hasNext(); i++) {
          if (i > 0) sb.append(' ');
          sb.append(iter.next().toString());
        }
      }
      byte[] b = sb.toString().getBytes();
      DatagramPacket packet = new DatagramPacket(b, Math.min(b.length, 1024), host, port);
      try {
        socket.send(packet);
      } catch (IOException e) {
        ev.addMessage("--- SysLogListener error ---");
        ev.addMessage(e);
      }
    }
    return ev;
  }