Отправка сообщения SysLog через TCP с помощью SyslogNet.Client - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь отправить сообщение на мой сервер системного журнала в Windows 10, созданный с помощью SysLog Watcher.

Сообщение отправляется по протоколам TCP и UDP, но при использовании TCP флаги Severity и Facility не отправляются.

С UDP все работает нормально!

Я уже пробовал Kiwi Server и проблема та же.

Я использую nuget SyslogNet.Client и отправляюсообщение UDP следующим образом:

SysLogMessage msg = new SysLogMessage(SyslogMessage(
                DateTimeOffset.Now,
                14, // Facility - LogAlert
                2, // Severity - Critical
                LocalHostName ?? Environment.MachineName, // MachineName
                "AppName", // AppName
                null, // ProcId
                "MessageType", // Message type name
                "message to be sent"); // message to be sent


ISyslogMessageSerializer serializer = options.SyslogVersion == "5424"
                        ? (ISyslogMessageSerializer)new SyslogRfc5424MessageSerializer()
                        : options.SyslogVersion == "3164"
                            ? (ISyslogMessageSerializer)new SyslogRfc3164MessageSerializer()
                            : (ISyslogMessageSerializer)new SyslogLocalMessageSerializer();

                    SyslogMessage msg = CreateSyslogMessage(options);

                    ISyslogMessageSender sender = null;
                    if (options.NetworkProtocol.Equals("tcp", StringComparison.InvariantCultureIgnoreCase))
                    {
                        sender = IsEncryptedTCP ?
                                   (ISyslogMessageSender)new SyslogEncryptedTcpSender(options.SyslogServerHostname, options.SyslogServerPort)
                                   : (ISyslogMessageSender)new SyslogTcpSender(options.SyslogServerHostname, options.SyslogServerPort);
                    }
                    else if (options.NetworkProtocol.Equals("udp", StringComparison.CurrentCultureIgnoreCase))
                    {
                        sender = (ISyslogMessageSender)new SyslogUdpSender(options.SyslogServerHostname, options.SyslogServerPort);
                    }
                    else
                    {
                        sender = (ISyslogMessageSender)new SyslogLocalSender();
                    }
                    #endregion

                    sender.Send(msg, serializer);

Опять же, это прекрасно работает с UDP, но при использовании TCP или LocalSend сообщение не отправляет флаги Facility и Severity!

Я ожидаючтобы увидеть флаги Facility и Severity, отправленные через протокол SyslogNet.Client over TCP!

Спасибо!

...