У меня проблема с настройкой rsyslog для записи данных удаленного журнала в конкретный файл. У меня есть два окна Windows Server 2008, в каждом из которых есть приложение C #, использующее NLog.Targets.Syslog, которое регистрирует свои данные отладки в окне Linux. Все данные журнала записываются в / var / log / syslog нормально, но я хочу иметь отдельный файл журнала для каждого сервера, и данные журнала не записываются в эти пользовательские файлы журнала.
Вот моя установка:
/etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
Я создал собственный файл conf в /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, что я делаю не так?
На сервере регистрации я запускаю ubuntu на инстансе Amazon EC2.
Вот моя конфигурация 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
ОК, решил. Я изменил запись конфигурации в моем настраиваемом файле 22-remote.conf в /etc/rsyslog.d/ следующим образом:
: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
& ~