【问题标题】:tail -f log file timestamptail -f 日志文件时间戳
【发布时间】:2017-03-31 21:21:16
【问题描述】:

下午好。我的日志文件会在一天中填充,因为许多脚本在不同时间运行。这不是一个巨大的文件,但一个问题是日志条目没有进入时间的时间戳。

在这种情况下,我通常通过 PuTTY 会话登录到服务器并在该日志文件上运行 tail -f,以便我可以看到这些脚本正在开始。我想做的是改变我的 tail -f 以包含显示在屏幕上的每个项目的时间戳。我使用了以下内容:

tail -f scheduler_date '+%m%d%y'.log | sed s/^/$(日期 +%H:%M%_*)/

这里的问题是它使用了tail命令的时间戳,而不是每一行进入日志文件的时间。

我查看了其他一些案例,包括以下案例,但我发现没有一个案例能准确提供我正在寻找的内容。任何帮助,将不胜感激。

How to pipe tail -f into awk

https://users.cs.cf.ac.uk/Dave.Marshall/PERL/node241.html

【问题讨论】:

    标签: timestamp tail logfile


    【解决方案1】:
    tail -f "scheduler_$(date '+%m%d%y').log" | perl -pe 's/^/$_=qx(date +%T_); chomp; $_/e'
    

    qx 调用外部date +%T_ 命令。它的输出存储在变量$_ 中。 chomp 从$_ 中删除一个尾随换行符。然后返回$_ 成为替代。

    我假设你命令中的最后一个% 是一个错字,应该用秒代替,所以我写了%T,这是%H:%M:%S 的缩写。

    如果性能很重要,您可以像这样在每行中不使用新的日期处理:

    tail ... | perl -pe 'BEGIN { use POSIX "strftime" } s/^/strftime "%T_", localtime/e'
    

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      相关资源
      最近更新 更多