Linux 更改系统日志中的日期格式
我们是否可以更改syslog记录到的特定日志文件中的日期格式?我不想改变记录所有日志的方式,只是通过日志文件 编辑:我正在使用syslogd(在FreeBSD中) 这就是我的文件现在的样子:Linux 更改系统日志中的日期格式,linux,date,freebsd,syslog,Linux,Date,Freebsd,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 这就是我希望它看起来的样子: 20131205 07:52:10 Log data 1 20131205 07:52:10 Log data 2
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
我在使用FreeBSD 9.2和系统监视器GUI时遇到了同样的问题,它们无法处理系统日志消息上日期戳(!)中的“一月”或“二月”之类的事情 我所做的是安装了
sysutils/syslog ng
端口,并使用脚本将我的/etc/syslog.conf
迁移到/usr/local/etc/syslog ng.conf
(谢天谢地,即使在相当复杂的配置中,它也能正常工作),并将此自定义格式模板添加到所有文件()
目的地:
template t_msgfmt {
template("${ISODATE} ${HOST} ${FACILITY} ${LEVEL} ${MSGHDR}${MSG}\n");
template_escape(no);
};
您可以在中找到更多格式信息。它对我(到目前为止)有好处,希望它能帮助你 最后,我使用一个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
即使你找到了不同的解决方案,我也会给别人一个答案 编辑系统日志配置文件(在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);
};
致:
目标d_auth{file(“/var/log/auth.log”模板(模板日期格式));};
然后重新启动syslog(
service syslog ng restart
),并尝试登录以查看您的auth.log
中的更改日期问题始终有一个新选项,只添加几行。我的解决方案是在
/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...
这在很大程度上取决于您使用的系统日志守护进程。使用此信息编辑问题,您可能会得到更好的回答。
date-d“Dec 5 07:52:10”+%Y%m%d%T“
将为您提供类似于20131205 07:52:10
的输出。我不知道的是如何在syslog.conf中设置格式。这很有趣,我一定会尝试一下。
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...