1. 默认的日志时间戳显示为如下形式:

  • /var/log/secure
Jul 18 22:58:22 node0 su: pam_unix(su-l:session): session opened for user root by user(uid=1001)
Jul 18 23:03:31 node0 su: pam_unix(su-l:session): session closed for
  • /var/log/messages
Jul 14 09:22:07 node0 NetworkManager[701]: <info>  [1563067327.3908] dhcp4 (ens33):   address 192.168.74.129
Jul 14 09:22:07 node0 NetworkManager[701]: <info> [1563067327.3914] dhcp4 (ens33): plen 24 (255.255.255.0)

2. 做如下修改

vim /etc/rsyslog.conf

# Use default timestamp format
# 下一行是原来的配置,将它注释
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 添加下面两行
$template CustomFormat,"%$NOW% %TIMESTAMP:8:15% %HOSTNAME% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate

再看看结果:

  • /var/log/secure
2019-07-19 01:35:56 node0 polkitd[670]: Loading rules from directory /etc/polkit-1/rules.d
2019-07-19 01:35:56 node0 polkitd[670]: Loading rules from directory /usr/share/polkit-1/rules.d
  • /var/log/messages
2019-07-19 01:47:29 node0 NetworkManager[701]: <info>  [1563472049.7353] dhcp4 (ens33):   nameserver '192.168.74.2'
2019-07-19 01:47:29 node0 NetworkManager[701]: <info> [1563472049.7353] dhcp4 (ens33): domain name 'localdomain'

3. 在/etc/profile中设置环境变量

export TIME_STYLE='+%Y/%m/%d %H:%M:%S'

只能修改ls命令的输出日期格式。

4. 现在可以使用sed提取日志记录了

sed -n '/2018-11-08 10:15:00/, /2018-11-11 10:15:00/p'

注意:日期字符串必须在logfile中存在。如果“2018-11-08 10:15:00”或者“2018-11-11 10:15:00”在logfile中没有,那么sed是不会输出任何结果的。

当然如下形式也可以按时间顺序过滤日志

sed -n '/Jul 18 22:09:53/,/Jul 18 22:56:03/p' logfile
sed -n '/Jul 18 22:09:53/,$p'

同样要求日期字符串必须在logfile中存在

5. 修改时间为24小时制

终端输入命令:

tzselect

根据提示选择:
CentOS7如何修改日志的时间戳格式(包括24小时格式)_unix

rm /etc/localtime
ln