如何在 Rsyslog 中使用 startmsg.regex

How to use startmsg.regex in Rsyslog

以下是我的配置文件。我想为 startmsg.regex.

添加配置

我在配置文件中添加了以下行

  startmsg.regex="^[[:digit:]]{4}\/[[:digit:]]{2}\/[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}"


ModLoad imfile
$InputFilePollInterval 10
$PrivDropToGroup proxy
$WorkDirectory /var/spool/rsyslog


$InputFileName /var/log/app/cache.log
$InputFileTag app-error:
$InputFileStateFile stat-app-error
$InputFileSeverity error
$InputFilePersistStateInterval 20000
$InputRunFileMonitor

  startmsg.regex="^[[:digit:]]{4}\/[[:digit:]]{2}\/[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}"





$template AppError,"error %msg%\n"

if $programname == 'app-error' then @@0.0.0.0:12345;AppError
if $programname == 'app-error' then ~

当我使用 rsyslogd -N1 检查我的配置文件时,出现错误。 使用此功能的正确方法是什么?

以下是我用来通过 rsyslog 发送日志的配置文件。 我也在添加示例日志。

此配置将匹配每个事件以 YYYY/MM/DD HH:MM:SS 开头 然后发送到我的 TCP 端点。 此配置可与多行日志一起使用

module(load="imfile" PollingInterval="10") #needs to be done just once
# File 1
input(type="imfile"
  File="/var/log/app/my.log"
  Tag="app-error"
  Severity="error"
  startmsg.regex="^[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2} [[:digit:]]{1,2}:[[:digit:]]{1,2}:[[:digit:]]{1,2}"
)


$PrivDropToGroup proxy
$WorkDirectory /var/spool/rsyslog


$template AppError,"error %msg%\n"

if $programname == 'app-error' then @@0.0.0.0:12345;AppError
if $programname == 'app-error' then ~

示例日志:

2017/10/24 09:14:06 id1|   Took 0.00 seconds (  0.00 entries/sec).
CPU Usage: 0.052 seconds = 0.032 user + 0.020 sys
Maximum Resident Size: 104944 KB
Page faults with physical i/o: 0
2017/10/24 09:14:06 id1| found error

现在 rsyslog 将我的多行日志作为单个事件发送到我的 tcp 端点,如下所示:

2017/10/24 09:14:06 id1|   Took 0.00 seconds (  0.00 entries/sec). \nCPU Usage: 0.052 seconds = 0.032 user + 0.020 sys \nMaximum Resident Size: 104944 KB \nPage faults with physical i/o: 0
2017/10/24 09:14:06 id1| found error