正如我们都知道“unix”除了“/”和“\ 0”之外可以有任何文件,系统pipe理员往往会有一个更小的偏好,主要是由于没有任何喜欢空间作为input…和一堆事情对“:”和“@”等特殊含义。
最近我又看到了另外一个例子,在一个文件名中使用了一个时间戳,在用不同的格式播放了一些后使它“更好”,我想我会试图find一个“最佳实践”,而不是看到一个我只是问在这里,看看人们的想法。
可能的“常见”解决scheme(p =前缀和s =后缀):
syslog / logrotate / DNS格式如下:
p-%Y%m%d-suffix = prefix-20110719-s p-%Y%m%d%H%M-suffix = prefix-201107191732-s p-%Y%m%d%H%M%S-suffix = prefix-20110719173216-s
优点:
缺点:
ISO-8601格式
p-%Y-%m-%ds = p-2011-07-19-s p-%Y-%m-%dT%H:%M%zs = p-2011-07-19T17:32-0400-s p-%Y-%m-%dT%H:%M:%S%zs = p-2011-07-19T17:32:16-0400-s p-%Y-%m-%dT%H:%M:%S%zs = p-2011-07-19T23:32:16+0200-s
优点:
缺点:
rfc-3339格式
p-%Y-%m-%ds = p-2011-07-19-s p-%Y-%m-%d %H:%M%:zs = p-2011-07-19 17:32-04:00-s p-%Y-%m-%d %H:%M:%S%:zs = p-2011-07-19 17:32:16-04:00-s p-%Y-%m-%d %H:%M:%S%:zs = p-2011-07-19 23:32:16+02:00-s
优点:
缺点:
我喜欢连字符:
p-%Y-%m-%ds = p-2011-07-19-s p-%Y-%m-%d-%H-%Ms = p-2011-07-19-17-32-s p-%Y-%m-%d-%H-%M-%Ss = p-2011-07-19-23-32-16-s
优点:
缺点:
我喜欢连字符,扩展名是:
p.%Y-%m-%ds = p.2011-07-19.s p.%Y-%m-%d.%H-%Ms = p.2011-07-19.17-32.s p.%Y-%m-%d.%H-%M-%Ss = p.2011-07-19.23-32-16.s
优点:
缺点:
…所以任何人都想给一个偏好和一个理由,或者不止一个(例如,如果95%的机器呆在机器本地,不关心TZ,但是如果不是的话,可以多花点心思)。
或者,显然,不在上面的列表中。
所以…样本“最好”的date格式:
20120317T1748Z
2012-03-17T1748Z
2012-03-17–1748Z
我偏向于1,因为它完全符合IAW的标准,但其他的则接近。
注::当然,根据需要添加秒。 …是的,有或没有秒(甚至分钟)是所有IAW ISO 8601。:)
我不会包括一个时区,只能使用世界时间。 如果可能有混淆,可以添加-UTC后缀。 如果你指定一个时区,有人可能会依赖它。 并且会出现奇怪的边缘情况,其中DST更改或DST偏移对某些处理造成严重破坏,或者某些系统上的处理不同,因为它们的DSTconfiguration不是最新的。 UTC在任何地方都一样。
我认为连字符使文件名更具可读性,因为它使得更容易辨别文件数据的date时间。 如果你想包括亚秒精度,通常是.nnnnn。
我个人不喜欢T.在文件名中使用冒号可能会影响与其他文件系统的互操作性。
我也不包括时区。 处理日志的脚本/工具应该知道这一点。 另外就夏季/冬季时间的变化而言,我build议您始终将您的服务器始终固定在UTC。 基本服务器时区与在其上运行的数据库的(不变)时区之间的突然差异可能会导致头痛;-)。
关于日志文件命名 – 我知道,许多人不喜欢它,但我想保持简单:
p-%s-type.log = p-1311116459-type.log
优点:
缺点:
在同事(无论什么原因)需要手动检查日志的机器上,我select了每天轮换的这个变体:
p-%Y-%m-%d-type.log = p-2011-07-20-type.log
最好的祝福