// hack: category might be confused for HostName, it might end there
        private string CheckCategoryInHostName(SyslogEntry entry)
        {
            var hostName = entry.Header.HostName;

            if (hostName != null && hostName.StartsWith("%"))
            {
                return(hostName);
            }
            return(null);
        }
Ejemplo n.º 2
0
        // WARN (CEV): Remove if not used
        private SyslogEntry ParseSyslogMessage(byte[] msg)
        {
            string      s     = Encoding.UTF8.GetString(msg);
            SyslogEntry entry = new SyslogEntry {
            };

            // PRI
            if (s[0] != '<')
            {
                throw new Exception("Invalid message: " + s);
            }
            s = s.Substring(1);
            int n = s.IndexOf('>');

            entry.Priority = (Forwarder.Priority) int.Parse(s.Substring(0, n));

            // Skip Syslog version if any "<PRI>VERSION"
            s             = s.Substring(n + 1);
            entry.Version = s[0];
            s             = s.Substring(1).TrimStart();

            // Timestamp
            n = s.IndexOf(" ");
            string timestamp = s.Substring(0, n);

            entry.Timestamp = XmlConvert.ToDateTime(timestamp, XmlDateTimeSerializationMode.Utc);
            s = s.Substring(n + 1).TrimStart();

            // HOSTNAME
            n = s.IndexOf(" ");
            entry.Hostname = s.Substring(0, n);
            s = s.Substring(n + 1).TrimStart();

            // hostname "app name"

            // App-Name
            n             = s.IndexOf(" ");
            entry.AppName = s.Substring(0, n);
            s             = s.Substring(n + 1).TrimStart();

            // PID
            n         = s.IndexOf(" ");
            entry.Pid = int.Parse(s.Substring(0, n));
            s         = s.Substring(n + 1).TrimStart();

            // MessageID
            n = s.IndexOf(" ");
            entry.MessageID = s.Substring(0, n);
            s = s.Substring(n + 1).TrimStart();

            entry.Message = s.TrimStart();

            return(entry);
        }
Ejemplo n.º 3
0
        public static string Serialize(SyslogEntry entry)
        {
            var writer = new StringBuilder();

            writer.WriteHeader(entry);
            writer.WriteStructuredData(entry.StructuredData);
            if (!string.IsNullOrEmpty(entry.Message))
            {
                writer.Append(SyslogChars.Space);
                writer.Append(entry.Message);
            }
            return(writer.ToString());
        }
Ejemplo n.º 4
0
        private static void WriteHeader(this StringBuilder writer, SyslogEntry entry)
        {
            writer.Append('<');
            var pri = GetPriority(entry);

            writer.Append(pri);
            writer.Append('>');
            writer.Append('1');
            writer.Append(Space);
            var header = entry.Header;
            var tsStr  = header.Timestamp == null ? string.Empty : header.Timestamp.Value.ToString(TimestampFormat);

            writer.AppendWordOrNil(tsStr);
            writer.AppendWordOrNil(header.HostName);
            writer.AppendWordOrNil(header.AppName);
            writer.AppendWordOrNil(header.ProcId);
            writer.AppendWordOrNil(header.MsgId);
        }
Ejemplo n.º 5
0
        public void Send(SyslogEntry entry)
        {
            var payload = SyslogSerializer.Serialize(entry);

            Send(payload);
        }
Ejemplo n.º 6
0
 private static int GetPriority(this SyslogEntry entry)
 {
     return(((int)entry.Facility) * 8 + (int)entry.Severity);
 }