如何将windows日志转成syslog格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将windows日志转成syslog格式相关的知识,希望对你有一定的参考价值。

参考技术A 本篇文章是对php中将日志写进syslog的方法进行了详细的分析介绍,需要的朋友参考下 在做项目的时候们为了方便运维,我们经常需要将系统日志写入系统syslog,下边我们就介绍一下,在linux下php对syslog的操作: 在linux中配置syslog 在linux中,facility(设备)有以下几种: AUTH 普通安全/授权消息 AUTHPRIV 私有安全/授权消息 CRON 定时器进程 DAEMON 守护进程 KERN 内核消息 LOCAL0 ... LOCAL7 本地应用,在windows上不支持 LPR 行式打印机 MAIL 邮件服务 NEWS 新闻服务 SYSLOG 由syslogd内部产生的消息 USER 通用的用户级信息 UUCP UUCP子系统 登录linux系统,进入/etc目录,输入: 复制代码 代码如下: vim syslog.conf 打开syslog的配置文件 在这里,你可以看到syslog的所有配置信息,这里定义了在上一节中提到的每种日志类型存储日志所使用的条件,如: daemon.* -/var/log/daemon.log 定义了daemon所产生的日志的保存位置,其中daemon为日志类型,“*”代表将所有级别的日志都放到该文件。格式为: facility。level -日志文件保存的路径,如-/var/log/daemon.log level包括: emerg -该系统不可用 alert -需要立即被修改的条件 crit -阻止某些工具或子系统功能实现的错误条件 err -阻止工具或某些子系统部分功能实现的错误条件 warning -预警信息 notice -具有重要性的普通条件 info -提供信息的消息 debug -不包含函数条件或问题的其他信息 none -没有重要级,通常用于排错 * 所有级别,除了none 下面我们在配置文件中定义一个自己设备的日志规则:local4.info -/var/log/ 接下来执行命令/etc/init.d/sysklogd restart或/etc/init.d/sysklogd reload使新增的配置生效,下面我们可以测试新增的日志规则了: 1.输入命令 logger -p local4.info " my test log" 2.执行命令 tail /var/log/event_log.log 你可以看到自己写入的日志信息: 注意:syslog.conf中local4.info 代表所有info级别以及以上的日志会记录到这里 ok,到现在我们已经在ubuntu中设置好了我们需要的日志,下面我们用php中的syslog将日志写到ubuntu中的syslog中。 下面直接上php代码: 复制代码 代码如下: openlog("Event1.0", LOG_PID LOG_PERROR, LOG_LOCAL4); syslog($level, "LOG MESSAGE: " . $errinfo); closelog(); 以上各方法的具体用法请查看PHP的API,具体用法不在这里赘述。 其中openlog的第一个参数,是日志标识,该标识会自动加在日志信息的开始,用来表示是什么系统写入的日志。 由于我们想要将日志写入local4.info,所以第三个参数需使用LOG_LOCAL4,该参数表示写入日志的设备信息。 syslog中$level为日志级别,包括: LOG_EMERG system is unusable LOG_ALERT action must be taken immediately LOG_CRIT critical conditions LOG_ERR error conditions LOG_WARNING warning conditions LOG_NOTICE normal, but significant, condition LOG_INFO informational message LOG_DEBUG debug-level message 第二个参数为具体的日志内容。

如何使用 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 接收器成功了!

【讨论】:

以上是关于如何将windows日志转成syslog格式的主要内容,如果未能解决你的问题,请参考以下文章

将Windows日志转换为Syslog

如何将Win格式文件转Linux格式

如何在windows2008建立syslog服务器

利用Syslog Watcher在windows下部署syslog日志服务器

如何在qt中使用Syslog-Win32库?

如何利用flume从syslog获取日志?