如何使用 SYSLOG 和 TLS 从 Windows 服务发送日志?

Posted

技术标签:

【中文标题】如何使用 SYSLOG 和 TLS 从 Windows 服务发送日志?【英文标题】:How to send logs using SYSLOG and TLS from a windows service? 【发布时间】:2020-11-10 11:17:38 【问题描述】:

我正在创建一个 Windows 服务,它将使用 SYSLOG 将日志发送到远程服务器。此服务器要求使用 TLS 发送日志。

我目前正在使用Microsoft.Extensions.Logging.Log4Net.AspNetCore(Log4Net) 来实现这一点。但似乎 log4net 的 RemoteSyslogAppender 不支持 TLS(RFC5425)。

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true" threshold="ALL">
  <!-- Doc: http://logging.apache.org/log4net/release/sdk/index.html -->
  <!-- From Xml-Schemas, add Common\ConfigAndInfo\log4net.xsd -->
  <appender name="SYSLOG" type="log4net.Appender.RemoteSyslogAppender">
    <remoteAddress value="%envSYSLOG_URL" />
    <remotePort value="514" />
    <appName>Application</appName>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message%newline"/>
    </layout>
  </appender>

  <root>
    <level value="ALL" />
    <appender-ref ref="SYSLOG" />
  </root>

</log4net>

我看到了一个 Nuget 包 (https://www.nuget.org/packages/syslog4net/),它添加了 TLS 支持,但它自 2017 年以来一直没有更新。所以我有点犹豫要不要使用它。

有人找到解决办法了吗?似乎 log4net 是用于登录 .NET 的 goto 库?奇怪它不支持像 TLS 这样常见的东西?

【问题讨论】:

【参考方案1】:

Serilog 使用 Syslog 接收器成功了!

【讨论】:

以上是关于如何使用 SYSLOG 和 TLS 从 Windows 服务发送日志?的主要内容,如果未能解决你的问题,请参考以下文章

Syslog和Windows事件日志收集

Syslog-cert问题

Syslog-ng 证书问题

如何在 Mac OS X *和* Debian (7) 上使用 SysLogHandler 或 syslog 从 Python 登录到 syslog

如何将结构化数据从 Twisted 发送到 syslog?

如何从发送到 Logstash 的 syslog 日志中检索标签?