更改syslog中的日期格式

ego*_*ulz 9 linux freebsd date syslog

无论如何我们可以更改syslog记录的特定日志文件中的日期格式吗?我不想改变记录所有日志的方式,而只是改变日志文件.

编辑:我正在使用syslogd(在FreeBSD中)

这就是我的文件现在的样子:

Dec  5 07:52:10 Log data 1
Dec  5 07:52:10 Log data 2
Dec  5 07:52:10 Log data 3
Run Code Online (Sandbox Code Playgroud)

这就是我希望它看起来像:

20131205 07:52:10 Log data 1
20131205 07:52:10 Log data 2
20131205 07:52:10 Log data 3
Run Code Online (Sandbox Code Playgroud)

我的syslog.conf看起来像这样,其中/var/log/my_log.log是我的日志文件:

+@
*.notice;local0.none;local1.none;local2.none;authpriv.none;kern.debug;mail.crit;news.err        /var/log/messages
security.*                                      /var/log/security
auth.info;authpriv.info                         /var/log/auth.log
mail.info                                       /var/log/maillog
ftp.info                                        /var/log/xferlog
cron.*                                          /var/log/cron
*.=debug                                        /var/log/debug.log
console.info                                    /var/log/console.log

local1.info                                     /var/log/my_log.log
Run Code Online (Sandbox Code Playgroud)

小智 7

即使您找到了不同的解决方案,我也会为其他人提供答案.

编辑syslog配置文件(例如,在Debian上/etc/syslog-ng/syslog-ng.conf).

然后声明一个这样的新模板:

template template_date_format {
    template("${YEAR}-${MONTH}-${DAY} ${HOUR}:${MIN}:${SEC} ${HOST} ${MSGHDR}${MSG}\n");
    template_escape(no);
};

这是一个示例,但您可以根据user9645的答案中链接的syslog文档使用不同的宏.

之后,在此配置文件中查找要更改输出格式的所有文件,并将此模板应用于它们.

例如,我想更改/var/log/auth.log输出格式,然后我改变:

destination d_auth { file("/var/log/auth.log"); };

至 :

destination d_auth { file("/var/log/auth.log" template(template_date_format)); };

然后重新启动syslog(service syslog-ng restart)并尝试登录以查看您的更改auth.log.


fcm*_*fcm 5

对于日期问题总是有新的选项,只需添加几行即可。
我的解决方案是添加一个文件/etc/rsyslog.d/,例如 myrsyslog.conf,然后添加您选择的格式,我的是:

$template myformat,"%TIMESTAMP:1:10:date-rfc3339% %TIMESTAMP:19:12:date-rfc3339% %syslogtag%%msg%\n"
$ActionFileDefaultTemplate myformat
Run Code Online (Sandbox Code Playgroud)

这会将新格式应用于您的日志,使其易于解析。

Sep  3 12:52:37 whs dhcpcd[477]: wlan0: expired address ...
Sep  3 12:52:37 whs dhcpcd[477]: wlan0: part of Router Advertisement expired
Sep  3 12:52:37 whs dhcpcd[477]: wlan0: deleting route to ...
Run Code Online (Sandbox Code Playgroud)

2020-09-03 13:00:49 systemd[1]: rsyslog.service: Succeeded. 
2020-09-03 13:00:49 systemd[1]: Stopped System Logging Service. 
2020-09-03 13:00:49 systemd[1]: Starting System Logging Service...
Run Code Online (Sandbox Code Playgroud)


ego*_*ulz 2

我最终使用 awk 脚本来运行日志文件并替换日期字段

awk '{getDate="date -j -f \"%b %d %H:%M:%S\" \""$1" "$2" "$3"\" \"+%Y%m%d %H:%M:%S\""
      while ( ( getDate | getline date ) > 0 ) { }
      close(getDate);
      print date,$2,$3,$4,$5}' Temp1 > Temp2
Run Code Online (Sandbox Code Playgroud)