使用Python解析来自服务器的JSON日志

2024-05-28 19:29:24 发布

您现在位置:Python中文网/ 问答频道 /正文

从下面的JSON日志中,我需要解析“domains”的日志行,这些域的状态为“ADMIN_DOWN”,并且从7天起没有更改或更改为“ONLINE”。在

示例:

以下共享日志的最后一行:

{user=abc,”lastUpdated":"2017-10-15 12:16:40.655569+00","id”:3201,”message”:”sub1.a1.com" new status = ADMIN_DOWN [asda:sdadada]”}, 

在消息键中有一个域:“sub1.a1.com”,状态变为“ADMIN_DOWN”,但在第三行日志中变成了“ONLINE”。所以,我们可以忽略这一点,因为这个域已经“在线”了。在

我要得到所有的日志行有“管理员关闭”从过去7天和相同的域没有日志生成“联机”以后。在

还有一个“id”,它总是随时间递增。不确定是否需要使用它。在

我从下面的代码开始,但不知道如何将这些日志时间戳与过去7天和当前日期进行比较。我只是在代码的最后一行添加了一个注释,但需要添加逻辑。在

我在想,如果我能把两个计时器(当前计时器和日志计时器)都转换成epoch。现在如何继续执行代码。在

我会很感激你的帮助。在

^{pr2}$

JSON日志:

 {“dump”:[
    { user=abc,”lastUpdated":"2017-10-24 12:52:40.655569+00","id”:4354,”message”:”sub1.google.com new status = ONLINE [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-23 14:38:40.274873+00","id”:4200,”message”:”sub1.adsense.com new status = ADMIN_DOWN [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-23 12:16:40.652369+00","id”:4155,”message”:”sub1.a1.com new status = ONLINE [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-22 16:46:40.598569+00","id”:4110,”message”:”sub1.b1.com new status = ADMIN_DOWN [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-18 12:55:40.132569+00","id”:3599,”message”:”sub1.google.com new status = ONLINE [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-15 13:09:40.655569+00","id”:3598,”message”:”sub1.bbc.com new status = ADMIN_DOWN [asda:sdadada]”},
    { user=abc,”lastUpdated":"2017-10-24 12:16:40.655569+00","id”:3555,”message”:”sub1.b1.com new status = ONLINE [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-23 11:06:40.655569+00","id”:3544,”message”:”sub1.d1.com new status = ADMIN_DOWN [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-23 12:19:40.655569+00","id”:3414,”message”:”sub1.c1.com new status = ADMIN_DOWN [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-22 09:16:40.655569+00","id”:3311,”message”:”sub1.google.com new status = ONLINE [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-18 12:46:40.655569+00","id”:3303,”message”:”sub1.b1.com new status = ADMIN_DOWN [asda:sdadada]”},
    {user=abc,”lastUpdated":"2017-10-15 12:16:40.655569+00","id”:3201,”message”:”sub1.a1.com new status = ADMIN_DOWN [asda:sdadada]”},
]}

Tags: comidmessagenewadmina1statusonline
1条回答
网友
1楼 · 发布于 2024-05-28 19:29:24
from datetime import date
TODAY = date(2017,10,25)
#Here data is the json
for i in data["dump"]:
    if "ADMIN_DOWN" in i["message"]:
        d = i["lastUpdated"].split()[0].split("-")
        DOWN_DATE = date(int(d[0]),int(d[1]),int(d[2]))
        if (TODAY - DOWN_DATE).days >= 7:
            print i

相关问题 更多 >

    热门问题