如何向重定向到日志文件的输出添加附加信息?

如何向重定向到日志文件的输出添加附加信息?

目前我有这样的东西:

./player_script |grep "videoname" >> log.log &

的输出player_script显示视频的开始和结束时间,grep然后仅获取某些视频文件名并将其放入其中log.log

因此log.log看起来像这样:

video <videoname> is playing now
video <videoname> ended
video <videoname> is playing now
video <videoname> ended

... 等等。

我需要的是文件在每一行开始和结束的时间戳,格式如下:

Feb 28 15:35:32 video <videoname> is playing now

我还需要日志文件的日期:log2012-02-29.log

它正在 Solaris 5.8 和 5.9 上运行。

答案1

回答你的第二部分很简单。不要使用 log.log,而是使用以下命令:

log`date '+%Y-%m-%d'`.log

请特别注意,date 命令后面有“反引号”。这告诉 shell 首先执行该命令,然后将结果粘贴到命令行上,使其成为文件名的一部分。

答案2

对于第一部分(由于我只能访问 Solaris 11,所以有点盲目尝试),有一个sh脚本解决方案:

./player_script | grep "videoname" | while read line;
     do echo `date '+%Y-%m-%d:%H:%M:%s'` $line;
     done >> log`date '+%Y-%m-%d'`.log

请注意,如果使用以下格式,可以更轻松地按日期对多行日志进行排序+%Y-%m-%d...

如果您希望日志条目上有准确的时间戳,您还必须小心,player_script或者grep不要缓冲数据。

相关内容