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.
对于日期问题总是有新的选项,只需添加几行即可。
我的解决方案是添加一个文件/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)
我最终使用 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)
| 归档时间: |
|
| 查看次数: |
19225 次 |
| 最近记录: |