private static string Serialize <T>(string fullName, T value) { if (value == null || !cefKeys.ContainsKey(fullName)) { return(null); } string valueAsString; if (value is Enum) { valueAsString = Convert.ToInt32(value) .ToString(); } else if (value is DateTimeOffset) { valueAsString = string.Format(CultureInfo.InvariantCulture, "{0:MMM dd yyyy HH:mm:ss}", value); } else { valueAsString = CefEncoder.EncodeExtension(value.ToString()); } return($"{cefKeys[fullName]}={valueAsString} "); }
/// <summary> /// Сериализует сообщение из <see cref="CefMessage"/> в <see cref="SyslogMessage"/> /// </summary> /// <param name="message">Сообщение для сериализации</param> /// <returns>Сообщение в формате библиотеки Syslog</returns> public SyslogMessage Serialize(CefMessage message) { var msg = string.Join("|", message.Version, CefEncoder.EncodeHeader(message.DeviceVendor), CefEncoder.EncodeHeader(message.DeviceProduct), CefEncoder.EncodeHeader(message.DeviceVersion), message.DeviceEventClassId, CefEncoder.EncodeHeader(message.Name), (int)message.Severity, Serialize(message.Extensions)); return(new SyslogMessage( message.Extensions.StartTime, Facility.UserLevelMessages, message.Severity.ToSyslogSeverity(), message.HostName, "CEF", msg)); }