Shell - 尝试输出日志文件的最后部分(时间戳是分隔符)

时间:2013-01-21 17:32:38

标签: python shell logging selenium qa

我想在日志文件中读入shell,并输出最后发生的已记录事件。这些日志是我在更大的脚本中使用的selenium-python自动化测试结果。此脚本需要日志的最后一块。

以下是示例输出文件中最后记录的事件之一的示例:

2013-01-10 13:49:55

Notes: 

FAIL: runTest (__main__.changeContent)

Traceback (most recent call last):
  File "demo-about-content-pyunit-w.py", line 294, in runTest
    self.assertEqual(browser.find_element_by_id("descriptionAbout").text, "We are a business used for automated testing and pretty much boring.", 'about desc would not change')
AssertionError: about desc would not change

Ran 1 test in 40.954s>

FAILED (failures=1)

日志文件按时间顺序包含与此类似的其他日志。我想使用上面的时间戳输出/刮取最后一个条目作为分隔符/截止阈值。我尝试过使用tail和正则表达式,但我不太清楚如何去做。我希望从最后读取文件,因为效率很重要。我想在shell中解决这个问题,但Python中的解决方案也可能有用。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您想要的,但您可以尝试:

tac logfile.log | while read line; do echo ${line};
    [[ "${line}" =~ [0-9]{4}(-[0-9]{2}){2}\ [0-9]{2}(:[0-9]{2}){2} ]] && break;
done | tac

此代码段向后读取文件“logfile.log”,每行打印一次,直到找到时间戳 - 使用您提供的格式。由于这些行已向后打印,因此tac的另一个调用会重新排序输出。