gpt4 book ai didi

java - 日志分析: finding lines by time difference

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:17 26 4
gpt4 key购买 nike

我有一个用 log4j 生成的长日志文件,10 个 threads 写入日志。我正在寻找日志分析器工具,它可以找到用户等待很长时间的行(即同一线程的日志条目之间的差异超过一分钟)。

P.S 我正在尝试使用 OtrosLogViewer,但它会按某些值(例如,按线程 ID)进行过滤,并且不会在行之间进行比较。

公务员事务局新版本的 OtrosLogViewer 有一个“Delta”列,用于计算 adj 日志行之间的差异(以毫秒为单位)

谢谢

最佳答案

这个简单的 Python 脚本可能就足够了。为了测试,我分析了我的本地 Apache 日志,BTW 使用 Common Log Format所以你甚至可以按原样重复使用它。我简单地计算两个后续请求之间的差异,并打印超过特定阈值(在我的测试中为 1 秒)的增量的请求行。您可能希望将代码封装在一个函数中,该函数也接受带有线程 ID 的参数,以便您可以进一步过滤

#!/usr/bin/env python
import re
from datetime import datetime

THRESHOLD = 1

last = None
for line in open("/var/log/apache2/access.log"):
# You may insert here something like
# if not re.match(THREAD_ID, line):
# continue
# Python does not support %z, hence the [:-6]
current = datetime.strptime(
re.search(r"\[([^]]+)]", line).group(1)[:-6],
"%d/%b/%Y:%H:%M:%S")
if last != None and (current - last).seconds > THRESHOLD:
print re.search('"([^"]+)"', line).group(1)
last = current

关于java - 日志分析: finding lines by time difference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com