记录到文件,在每行前面加上时间戳(Debian)

obe*_*tie 4 scripting linux debian shell logging

我正在尝试将我的一些 shell 脚本的输出记录到一个文件中,并且我希望在每一行前面加上时间戳。据我了解,这就是logger(1)目的,但我不希望输出到 /var/log/messages,而且我看不出使用 logger 是可能的。顺便说一下,我正在使用 Debian。

做这个的最好方式是什么?

——奥利弗

Jam*_*ley 6

logger的作用其实就是把消息分流到syslog;默认配置将添加时间戳并将日志写入 /var/log/messages,但这并不意味着记录器的目的是添加时间戳。

处理此问题的一种方法是修改您的 syslog 配置,以便您通过记录器路由的消息转到一个特殊文件 - 使用“-p”标志记录器来规定一个 factory.priority 对(可能是用户 [1. .7] 设施),并配置您的 syslogd 将该设施记录到一个特殊文件中。

或者,您可以创建一个快速的 shell 函数来简单地添加时间戳:

Bodacious:~ james$ timestamp () {
> f=`date`
> echo $f $*
> }
You have new mail in /var/mail/james
Bodacious:~ james$ timestamp a line of logs
Tue 18 Jan 2011 22:40:24 EST a line of logs
Bodacious:~ james$ 
Run Code Online (Sandbox Code Playgroud)

在我的系统上,这将导致 shell 在每行输出中分叉 /bin/date 一次。这是低效的,但在小规模下可能可以接受。