我试图弄清楚为什么 NXLog 无法读取完整的 .csf 文件,该文件具有相同的名称,但每 12 小时由 Windows 编辑一次以进行导出。
NXLog的conf文件:
#define ROOT C:\Program Files\nxlog
define ROOT C:\Program Files (x86)\nxlog
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
<Extension _syslog>
Module xm_syslog
</Extension>
<Extension gelf>
Module xm_gelf
</Extension>
<Extension csv>
Module xm_csv
Fields $name, $number, $naam, $group
FieldTypes string, string, string, string
Delimiter ;
#EscapeControl TRUE
</Extension>
<Input in>
# Use 'im_mseventlog' for Windows XP, 2000 and 2003
Module im_msvistalog
Exec if (;) drop();
# Uncomment the following to collect specific event logs only
# Query <QueryList>\
# <Query Id="0">\
# <Select Path="Application">*</Select>\
# <Select Path="System">*</Select>\
# <Select Path="Security">*</Select>\
# </Query>\
# </QueryList>
</Input>
<Input in2>
Module im_file
File 'D:\Program Files\Service\sync-log\sync.csv'
#File "/var/log/app/csv.log"
Exec csv->parse_csv();
</Input>
<Output out>
Module om_udp
Host 127.0.0.1
Port 12201
OutputType GELF
</Output>
<Route r>
Path in,in2 => out
</Route>
它读取该文件并包含以下内容:
000002;000002;"Aarts, Hans";FNC_care
000228;000228;"Smit, Jan";FNC_assist
000819;000819;"West, Tessa";FNC_doc
000287;000287;"Trom, Dik";"EML-k"
NXLog 的结果是他只找到最后一行信息。我的目标是让他能够读取整个 .csv 文件并分离给定的信息,这样它就不会看起来像这样:
000287;000287;"Trom, Dik";"EML-k"
但更像这样:
000287
000287
"Trom, Dik"
"EML-k"
输出的结果用于Graylog。
答案1
通过 GELF 发送时,字段(名称、编号、naam、组)应在 graylog 中可用。请注意,除非您使用类似以下内容明确指示它这样做,否则原始数据不会被重写:
Exec $raw_event = $name + "\n" + $number + "\n" + $naam + "\n" + $group;