因此,想象一下大约有 100 个具有不同时区的服务器(并非所有时区都不同,而是很多时区)。服务器日志上有如下输出:
server1:BFE4C025 0420201413 P H sysplanar0 UNDETERMINED ERROR
server2:BFE4C025 0421032413 P H sysplanar0 UNDETERMINED ERROR
-> 所以它们处于服务器时间(不同时区)->
0420201413 = 2013.04.20. 20:14
0421032413 = 2013.04.21 03:24
将 ex.: 0421032413 转换为 2013.04.21 03:24 很简单。但是:如果我在完全相同的时间在这两个服务器上发出“date”命令,服务器时间又会有所不同:
server1:Tue Apr 23 07:23:24 EDT 2013
server2:Tue Apr 23 13:23:24 MESZ 2013
我明白了。但我需要一个时区中提到的日志(只有那几行/服务器)。为什么?因为了解您所在时区的具体事件发生时间非常非常有用,例如:CET TZ。
问:如何将服务器日志时间转换为中欧时间?
答案1
如果您只想转换现有的系统日志文件,您可以使用一个小的 python/perl/ruby 程序来更改Tue Apr 23 07:23:24 EDT 2013
UTC(或 CET)的内容。
如果您想更好地控制写入日志文件的时间格式,您可能需要查看syslog-ng
.它的tsformat()
功能允许您配置时间格式,例如iso8601。
由于我自己必须使用 5 个时区的服务器,因此我强烈建议您使用 UTC 时间戳。由于夏令时不同时开始,跟踪 PST 中的 CET(或 CEST)(或者是否已经是 PDT)是一场噩梦。
答案2
您可以用来date
打印日期时间戳并将其与日志消息一起存储。
$ TZ='Europe/Warsaw' date
wto, 23 kwi 2013, 17:11:48 CEST
$ TZ='America/Los_Angeles' date
wto, 23 kwi 2013, 08:11:56 PDT
$ date --universal
wto, 23 kwi 2013, 15:13:14 UTC
用于tzselect
查找时区。