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

标签 python selenium shell logging

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

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

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 中的解决方案也可能有用。

最佳答案

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

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 会对输出重新排序。

关于python - Shell - 尝试输出日志文件的最后部分(时间戳是分隔符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444120/

相关文章:

python - 不同文件夹上的 FastApi 中间件不起作用

java - 成功执行测试后,Selenium 测试抛出错误

java - 输入信用卡号 Java Selenium

bash for 循环与 grave 命令

python - 从匹配索引开始循环多次遍历列表

python - 类型错误 : List of Tensors when single Tensor expected - when using const with tf. random_normal

javascript - Selenium Webdriver 自动完成文本框

linux - 如何将命令行输出重定向到一个文件,但仍然在命令行中显示它们?

c - 使用 chdir() 从终端更改目录

python - 如何多次移动二维数组的列,同时仍然考虑其原始位置?