如何在每个日志行上运行 jq 并跟踪它?

问题描述

我有一个日志文件,每一行都是一个 json 对象。我想将日志行视为漂亮的 json,同时能够跟踪日志,可能带有 tailless。 我尝试了以下操作,它们要么立即返回,即不拖尾日志,要么看起来拖尾(不返回)但不更新新日志

less jsonlines.log | jq "." 
tail -f jsonlines.log | jq "."

解决方法

“为我工作”™:

  • 在一个终端窗口中:

    while true; do echo "{\"date\":\"$(date)\"}" >> logfile; sleep 1; done
    
  • 在另一个:

    tail -f logfile | jq .