我的邮件日志日期的格式如下:
May 12 04:12:54
我需要在这个日期中添加年份。可以进行这种更改吗?
答案1
经过进一步的研究和测试,我找到了所需的解决方案。我的服务器使用 CentOS 7.6,它使用 rsyslog 进行记录。
- 编辑文件 /etc/rsyslog.conf,在“RULES”部分之前添加以下模板:
$template MailLogFormat, "%timestamp:::date-year%-%timestamp:::date-month%-%timestamp:::date-day% %timestamp:::date-hour%:%timestamp:::date-minute%:%timestamp:::date-second% %hostname% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
- 搜索以下行:
# Log all the mail messages in one place.
mail.* -/var/log/maillog
并更改为:
# Log all the mail messages in one place.
mail.* -/var/log/maillog;MailLogFormat
- 重新启动rsyslog:
systemctl restart rsyslog
完成。/var/log/maillog 文件中的日志将以以下格式打印日期:年-月-日 时:分:秒
答案2
可能更好的答案是对所有 rsyslog 生成的日志采用较新的 syslog 标准.....参见
http://support.pimpmylog.com/kb/softwares/rsyslog-protocol-23-format
该配置非常接近RFC 5424标准。
通过在 rsyslog.conf 文件中添加以下行即可完成此操作:
$ActionFileDefaultTemplate RSYSLOG_SyslogProtocol23Format
系统日志文件中的给定行将显示如下内容:
<27>1 2014-01-12T20:06:05.783312-05:00 somebody smbd 3752 - - [2014/01/12 20:06:05.783190, 0] printing/print_cups.c:487(cups_async_callback)
请注意,时间戳中包含完整的时间和日期以及时区。
答案3
感谢 dioo,我在 Ubuntu Server 20.04 中可以使用以下方法
转到 rsyslog 配置
sudo nano /etc/rsyslog.conf
在“全局指令”下,注释掉现有样式,例如,
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
并添加以下行
$template CustomFormat,“%时间戳:::日期年%-%时间戳:::日期月%-%时间戳:::日期日%%时间戳:::日期小时%:%时间戳:::日期分钟%:%时间戳:::日期秒%%主机名%%syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n”
保存并关闭文件。转到以下位置的 default-conf 文件
sudo nano /etc/rsyslog.d/50-default.conf
在您希望更改时间戳的每个日志行后附加“CustomFormat”
user.* -/var/log/user.log;CustomFormat
重启服务
sudo systemctl restart rsyslog
最终时间戳如下
2020-12-22 22:50:19