[LOGBack-dev] svn commit: r413 - logback/core/trunk/src/main/java/ch/qos/logback/core/net

noreply.ceki at qos.ch noreply.ceki at qos.ch
Mon Aug 7 23:06:52 CEST 2006


Author: ceki
Date: Mon Aug  7 23:06:51 2006
New Revision: 413

Added:
   logback/core/trunk/src/main/java/ch/qos/logback/core/net/SyslogConstants.java
   logback/core/trunk/src/main/java/ch/qos/logback/core/net/SyslogWriter.java
Log:
ongoing work on SyslogAppender

Added: logback/core/trunk/src/main/java/ch/qos/logback/core/net/SyslogConstants.java
==============================================================================
--- (empty file)
+++ logback/core/trunk/src/main/java/ch/qos/logback/core/net/SyslogConstants.java	Mon Aug  7 23:06:51 2006
@@ -0,0 +1,82 @@
+package ch.qos.logback.core.net;
+
+/**
+ * Constants used by syslog daemon and transitively by {@link SyslogAppender}.
+ * 
+ * @author Ceki Gülcü
+ **/
+public class SyslogConstants {
+  
+  
+  
+  // Following constants extracted from RFC 3164, we multiply them by 8
+  // in order to precompute the facility part of PRI.
+  // See RFC 3164, Section 4.1.1 for exact details.
+
+  /** Emergency: system is unusable */
+  public static final int EMERGENCY_SEVERITY = 0;       
+  /** Alert: action must be taken immediately */
+  public static final int ALERT_SEVERITY = 1;       
+  /**  Critical: critical conditions */
+  public static final int CRITICAL_SEVERITY = 2;  
+  /** Error: error conditions */
+  public static final int ERROR_SEVERITY = 3;  
+  /** Warning: warning conditions */
+  public static final int WARNING_SEVERITY = 4;  
+  /** Notice: normal but significant condition */
+  public static final int NOTICE_SEVERITY = 5;  
+  /**  Informational: informational messages */
+  public static final int INFO_SEVERITY = 6;  
+  /** Debug: debug-level messages */
+  public static final int DEBUG_SEVERITY = 7;  
+  
+  
+  /** kernel messages, numerical code 0. */
+  public static final int LOG_KERN = 0;
+  /** user-level messages, numerical code 1. */
+  public static final int LOG_USER = 1 << 3;
+  /** mail system, numerical code 2. */
+  public static final int LOG_MAIL = 2 << 3;
+  /** system daemons, numerical code 3. */
+  public static final int LOG_DAEMON = 3 << 3;
+  /** security/authorization messages, numerical code 4. */
+  public static final int LOG_AUTH = 4 << 3;
+  /** messages generated internally by syslogd, numerical code 5. */
+  public static final int LOG_SYSLOG = 5 << 3;
+  /** line printer subsystem, numerical code 6. */
+  public static final int LOG_LPR = 6 << 3;
+  /** network news subsystem, numerical code 7. */
+  public static final int LOG_NEWS = 7 << 3;
+  /** UUCP subsystem, numerical code 8 */
+  public static final int LOG_UUCP = 8 << 3;
+  /** clock daemon, numerical code 9. */
+  public static final int LOG_CRON = 9 << 3;
+  /** security/authorization  messages, numerical code 10. */
+  public static final int LOG_AUTHPRIV = 10 << 3;
+  /** ftp daemon, numerical code 11. */
+  public static final int LOG_FTP = 11 << 3;
+  /** NTP subsystem, numerical code 12. */
+  public static final int LOG_NTP = 12 << 3;
+  /** log audit, numerical code 13. */
+  public static final int LOG_AUDIT = 13 << 3;
+  /** log alert, numerical code 14. */
+  public static final int LOG_ALERT = 14 << 3;
+  /** clock daemon, numerical code 15. */
+  public static final int LOG_CLOCK = 15 << 3;
+  /** reserved for local use, numerical code 16. */
+  public static final int LOG_LOCAL0 = 16 << 3;
+  /** reserved for local use, numerical code 17. */
+  public static final int LOG_LOCAL1 = 17 << 3;
+  /** reserved for local use, numerical code 18. */
+  public static final int LOG_LOCAL2 = 18 << 3;
+  /** reserved for local use, numerical code 19. */
+  public static final int LOG_LOCAL3 = 19 << 3;
+  /** reserved for local use, numerical code 20. */
+  public static final int LOG_LOCAL4 = 20 << 3;
+  /** reserved for local use, numerical code 21. */
+  public static final int LOG_LOCAL5 = 21 << 3;
+  /** reserved for local use, numerical code 22. */
+  public static final int LOG_LOCAL6 = 22 << 3;
+  /** reserved for local use, numerical code 23.*/
+  public static final int LOG_LOCAL7 = 23 << 3;
+}

Added: logback/core/trunk/src/main/java/ch/qos/logback/core/net/SyslogWriter.java
==============================================================================
--- (empty file)
+++ logback/core/trunk/src/main/java/ch/qos/logback/core/net/SyslogWriter.java	Mon Aug  7 23:06:51 2006
@@ -0,0 +1,63 @@
+package ch.qos.logback.core.net;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+
+/**
+ * SyslogWriter is a wrapper around the {@link DatagramSocket} class 
+ * so that it behaves like a {@link Writer}.
+ */
+public class SyslogWriter extends Writer {
+  /**
+   * The maximum length after which we discard the existing string buffer and 
+   * start anew.
+   */
+  static final int MAX_LEN = 1024;
+  
+  static final int SYSLOG_PORT = 514;
+  
+  private InetAddress address;
+  private DatagramSocket ds;
+  private StringBuffer buf = new StringBuffer();
+  
+  public SyslogWriter(String syslogHost) throws UnknownHostException, SocketException  {
+    this.address = InetAddress.getByName(syslogHost);
+    this.ds = new DatagramSocket();
+  }
+
+  public void write(char[] charArray, int offset, int len) throws IOException {
+    buf.append(charArray, offset, len);
+  }
+
+  public void write(String str) throws IOException {
+    buf.append(str);
+   
+  }
+
+  public void flush() throws IOException {
+    byte[] bytes = buf.toString().getBytes();
+    DatagramPacket packet =
+      new DatagramPacket(bytes, bytes.length, address, SYSLOG_PORT);
+
+    if (this.ds != null) {
+      ds.send(packet);
+    }
+    // clean up for next round
+    if(buf.length() > MAX_LEN) {
+      buf = new StringBuffer();
+    } else {
+      buf.setLength(0);
+    }
+  }
+
+  public void close() {
+    address = null;
+    ds = null;
+  }
+}
+



More information about the logback-dev mailing list