我们是否可以更改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
这就是我希望它的样子:
20131205 07:52:10 Log data 1
20131205 07:52:10 Log data 2
20131205 07:52:10 Log data 3
我的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
答案 0 :(得分:7)
即使您找到了不同的解决方案,我也会为其他人提供答案。
编辑您的系统日志配置文件(例如,在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答案中链接的系统日志文档使用不同的宏。
之后,在此配置文件中找到要更改输出格式的所有文件,并将此模板应用于它们。
例如,我想更改/var/log/auth.log
输出格式,然后更改:
destination d_auth { file("/var/log/auth.log"); };
到:
destination d_auth { file("/var/log/auth.log" template(template_date_format)); };
然后重新启动系统日志(service syslog-ng restart
)并尝试登录以查看auth.log
中的更改。
答案 1 :(得分:4)
我使用FreeBSD 9.2和 Zabbix 系统监视器GUI时遇到同样的问题,系统日志上的日期戳(!)中无法处理“Jan”或“Feb”之类的内容消息。
我所做的是安装sysutils/syslog-ng
端口,然后使用 convert-syslogconf.awk 脚本将我的/etc/syslog.conf
迁移到/usr/local/etc/syslog-ng.conf
(值得庆幸的是即使是相当复杂的配置也能很好地工作)并将此自定义格式模板添加到所有file()
目的地:
template t_msgfmt {
template("${ISODATE} ${HOST} ${FACILITY} ${LEVEL} ${MSGHDR}${MSG}\n");
template_escape(no);
};
您可以在 syslog-ng manual section 11.1 中找到(批量)更多格式信息。它对我有用(到目前为止)希望它对你有所帮助!
答案 2 :(得分:3)
我最终使用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
答案 3 :(得分:0)
对于日期问题,总是有一个新选项,仅增加了几行。
我的解决方案是将文件添加到/etc/rsyslog.d/
,例如myrsyslog.conf
,然后添加您选择的格式,我的格式是:
$template myformat,"%TIMESTAMP:1:10:date-rfc3339% %TIMESTAMP:19:12:date-rfc3339% %syslogtag%%msg%\n"
$ActionFileDefaultTemplate myformat
这会将新格式应用于您的日志,使其易于解析。
之前
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 ...
之后
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...