【发布时间】:2013-02-23 07:23:29
【问题描述】:
在标准输出上打印出大量错误/警告/信息日志。我只对开始特定操作后记录的行感兴趣。
其他信息:我正在使用 Python 远程登录到 shell 环境。我在 shell 上执行命令并存储动作开始的时间。然后我调用一个命令来查看在标准输出上吐出的日志。我希望在该时间戳返回 Python 之后读取 greped 行。我还存储了当前时间,但不确定如何使用它(可能是日期范围上的 grep?)
我可以重定向到一个文件并使用 find,但日志很大,我宁愿不阅读所有内容。 我可以 grep -n 获取行号,然后阅读所有内容,但我不知道该怎么做。
egrep 的概念正则表达式类似于:{a-timestamp}*
任何建议将不胜感激!
【问题讨论】:
-
可以记录动作时日志文件的大小。然后在 Python 中使用
file.seek()开始读取与该大小对应的偏移量的日志文件。 -
有没有办法对标准输出做同样的事情? (这就是转储日志的地方)
-
您的问题中的“打开日志”是什么意思?那不是日志文件吗?那是管道吗?
-
刚刚找到一个解决方案:1) "wc -l" 获取行数 2) "grep -n {the-timestamp-i-have}" 获取我想开始的行号在 3) 减去这些和 "tail --{difference} 有什么更好的吗?
-
这对我来说看起来不错。
标签: python regex shell logging stdout