远程 rsyslog 仅将日志数据写入 /var/log/syslog 而不是自定义日志文件

远程 rsyslog 仅将日志数据写入 /var/log/syslog 而不是自定义日志文件

我在设置 rsyslog 以将远程日志数据记录到特定文件时遇到问题。我有两个 Windows Server 2008 机器,每个机器都有一个使用 NLog.Targets.Syslog 的 C# 应用程序,它们将其调试数据记录到 Linux 机器。所有日志数据都已写入 /var/log/syslog,但我希望每个服务器都有一个单独的日志文件,并且日志数据不会被写入这些自定义日志文件。

这是我的设置:

/etc/rsyslog.conf

$ModLoad imudp
$UDPServerRun 514

我在 /etc/rsyslog.d 中创建了一个自定义配置文件

/etc/rsyslog.d/22-remote.conf

:msg, contains, "AMAZONA-COMPUTERNAME1" /var/log/dbm/server-1.log
& ~
:msg, contains, "AMAZONA-COMPUTERNAME2" /var/log/dbm/server2.log
& ~

*.* /var/log/syslog.log

AMAZONA-COMPUTERNAME1 是服务器的 Windows 计算机名称。我也尝试过 IP 地址,但同样不起作用。我遗漏了什么?日志文件位于路径 /var/log/dbm/ 中

我没有从 rsyslog 收到任何有关此问题的错误,并且它很乐意将所有远程日志数据写入 /var/log/syslog 我做错了什么?

在日志服务器上,我在 Amazon EC2 实例上运行 ubuntu。

这是我的 NLog 配置:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <extensions>
    <add assembly="NLog.Targets.Syslog" />
  </extensions>

  <targets>
    <target name="syslog" type="Syslog" syslogserver="server ip here" port="514" facility="Local7"/>
  </targets>

  <rules>
    <logger name="*" minLevel="Trace" appendTo="syslog"/>
  </rules>
</nlog>

/var/log/syslog 中的示例日志输出

Oct 15 18:18:50 AMAZONA-COMPUTERNAME2 NLog: 2012-10-15 18:18:50.2890|DEBUG|myapp.download.excel.ExcelWorkbook|  -- Copied in the data table: 0
Oct 15 18:18:50 AMAZONA-COMPUTERNAME2 NLog: 2012-10-15 18:18:50.2890|DEBUG|myapp.download.excel.ExcelWorkbook|  -- Formatted Header and Footer: 0

答案1

好的,解决了。我将 /etc/rsyslog.d/ 中自定义 22-remote.conf 文件中的配置条目从以下内容更改为:

:msg, contains, "AMAZONA-COMPUTERNAME1" /var/log/dbm/server-1.log
& ~
:msg, contains, "AMAZONA-COMPUTERNAME2" /var/log/dbm/server2.log
& ~

对此:

if $fromhost-ip == '10.11.12.12' then /var/log/dbm/server-1.log
& ~
if $fromhost-ip == '10.11.13.13' then /var/log/dbm/server2.log
& ~

相关内容