// 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); }
// 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); }
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()); }
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); }
public void Send(SyslogEntry entry) { var payload = SyslogSerializer.Serialize(entry); Send(payload); }
private static int GetPriority(this SyslogEntry entry) { return(((int)entry.Facility) * 8 + (int)entry.Severity); }