如何在windows2008建立syslog服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在windows2008建立syslog服务器相关的知识,希望对你有一定的参考价值。

  我们需要测试一种集中日志系统,要在Windows上建立一个类Linux下的集中日志系统。
  
  经过比较Winsyslog和Kiwisyslog等工具,最终选定Kiwisyslog(http://www.kiwisyslog.com/),它不仅功能齐全,而且提供免费的版本。
  
  Kiwisyslog遵循标准的日志协议(RFC 3164),并支持UDP/TCP/SNMP几种方式的日志输入。它默认是个免费的功能受限版(但功能基本够用了,只是没有找到汉化),自带发送模拟器﹑日志浏览器等实用工具。
  
  我还测试了一下把ACE日志写到syslog的功能。过程记录如下:
  
  
  1)使用klog工具
  
  这个主要用到kiwisyslog的klog实用工具(这个工具同时提供dll库的调用方式,真是好东西,我决定以后在我的应用里都用它!),它支持直接或用重定向的方法输出日志到kiwisyslog。
  
  klog –m "It's almost lunchtime"
  
  DIR *.* | klog -h 192.168.1.2 -i
  
  
  但我试图使用ACE应用日志输出到kiwisyslog时(ace_app.exe | klog -h 192.168.1.2 -i的形式),发现日志内容里前后有乱码出现,即ACE的日志输出直接重定向到klog再转到kiwisyslog有问题;并且不能按时间一行一行的输出,而是等应用程序执行结束时一股脑输出到kiwisyslog(按回车换行切开成一条一条日志)。如果程序非正常结束,还不能将输出日志内容传到 kiwisyslog。
  
  
  还有一个方法是在Windows通过设置可以把ACE日志输出到系统日志里面。
  
  ACE_LOG_MSG->set_flags(ACE_Log_Msg::SYSLOG);
  
  然后按下面2)的方法转到kiwisyslog。
  
  
  2)还可以把Windows下的事件日志转到Linux下的syslog
  
  我们需要第三方的软件来将windows的日志转换成syslog类型的日志后,转发给syslog服务器。
  
  介绍第三方软件evtsys (全称是evntlog to syslog)
  
  文件才几十K大小,非常小巧,解压后是两个文件evtsys.dll和evtsys.exe
  
  把这两个文件拷贝到 c:/windows/system32目录下。
  
  打开Windows命令提示符(开始->运行输入CMD)
  
  C:/>evtsys –i –h 192.168.10.100
  
  -i 表示安装成系统服务
  
  -h 指定log服务器的IP地址
  
  如果要卸载evtsys,则:
  
  net stop evtsys
  
  evtsys -u
  
  启动该服务:
  
  C:/>net start evtsys
  
  打开windows组策略编辑器 (开始->运行输入 gpedit.msc)
  
  在windows设置-> 安全设置-> 本地策略->审核策略中,打开你需要记录的windows日志。evtsys会实时的判断是否有新的windows日志产生,然后把新产生的日志转换成syslogd可识别的格式,通过UDP 3072端口发送给syslogd服务器。
参考技术A 去网上找找教程吧,这方面应该很多的。

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

【中文标题】如何使用 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 接收器成功了!

【讨论】:

以上是关于如何在windows2008建立syslog服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何在windows服务器中使用syslog功能

如何将windows日志转成syslog格式

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

请问如何解决的?“windows2008 X64下,建立CMD程序的开机运行计划任务不能正常执行. 但直接双击执行”

怎么在windows server2008上建立网站

windows,交换机syslog收集