標準出力にタイムスタンプをつける

標準出力に出力されるログ等にタイムスタンプをつけたい場合、awkを使って以下のようにする。

  % (sleep 3; echo hogehoge) | awk '{ print strftime("[%Y/%m/%d %H:%M:%S]"), $0 } { fflush() }'
  [2017/02/24 00:29:59] hogehoge

ミリ秒までつけたい場合、awkは対応していないので、pythonあたりを使う。
以下をファイルとして保存。

  import sys
  from datetime import datetime
  for line in iter(sys.stdin.readline, ""):
      d=datetime.now()
      print(d.strftime("%Y/%m/%d %H:%M:%S.")+("%06d"%d.microsecond)+" "+line, end='', flush=True)

以下で実行。

  % (sleep 3; echo hogehoge) | python timestamp.py
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク