我无法配置 NXlog 来发送 Windows 事件登录日志。日志是在 NXlog 启动之前创建的,因此 NXlog 需要记住上次抓取事件日志的时间。
当我尝试在配置中使用“savePos”指令时,会出现问题:
此指令采用布尔值 TRUE 或 FALSE,并指定在 nxlog 退出时是否应保存文件位置。启动时将从缓存文件中读取文件位置。如果配置中未指定此指令,则默认保存文件位置。即使启用了 SavePos,也可以使用 NoCache 指令明确关闭它。
(来自文档)。
但 NXlog 从来不会将位置(或其他任何内容)写入缓存。
我没有使用 noCache,而且我在网上也没有找到任何相关信息。
我的 NXlog 配置(由 Graylog2 生成):
define ROOT C:\Program Files (x86)\nxlog
<Extension gelf>
Module xm_gelf
</Extension>
<Extension syslog>
Module xm_syslog
</Extension>
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
LogLevel INFO
<Extension logrotate>
Module xm_fileop
<Schedule>
When @daily
Exec file_cycle('%ROOT%\data\nxlog.log', 7);
</Schedule>
</Extension>
<Input 57849fe093a38e030db3e1d7>
Module im_msvistalog
PollInterval 2
SavePos True
ReadFromLast True
</Input>
<Output 57849aa293a38e030db3dc55>
Module om_udp
Host 10.200.68.102
Port 12201
OutputType GELF
Exec $short_message = $raw_event;
# Avoids truncation of the short_message field.
Exec $gl2_source_collector = '8d8925b7-f1c0-40ae-a1ed-e918432e2125';
Exec $Hostname = hostname_fqdn();
</Output>
<Route route-0>
Path 57849fe093a38e030db3e1d7 => 57849aa293a38e030db3dc55
</Route>