任务要求:读取日志文件log.txt,过滤ERROR log,将出现错误的用户名、IP地址、使用的客户端版本号打印出来,输出内容如下
知识点:文件读取、字符串查找&截取、json转换
参考答案:
# coding=utf-8
"""
Author: 笨笨
Date: 2021-12-30
"""
import json
log_file = open("log.txt", encoding='UTF-8')
lines = log_file.readlines()
msglist = []
for line in lines:
startindex = line.find("用户信息错误:")
if(startindex>0):
msg = line[startindex+len("用户信息错误:"):]
msglist.append(msg)
if (len(msglist) > 0):
for m in msglist:
d = json.loads(m)
print(d["userInfo"]["username"])
print(d["terminalIP"])
print(d["terminalVersion"])
print("============================")
log.txt
[INFO ] [2020-02-11 00:00:04] com.benli.analysis.services.impl.RealtimeListenerService MQ message : {"extend":{"bookId":"D3C6AA9","courseId":134478,"duration":647},"logType":"OPERATION","opId":"003002001031","success":true,"terminalType":"Android-Moblie HONOR NEM-AL10 7.0 4.12.0","time":1581350400178,"userId":6529838}
[INFO ] [2020-02-11 00:00:08] com.benli.analysis.factory.PersistenceHandler {"activityNum":0,"addUserNum":0,"fdate":20200210,"id":0,"loginUserNum":2,"mylabActiveNum":0,"qaNum":0,"qaReplyNum":0,"schoolId":1321468,"studentLoginNum":2,"taskNum":0,"teacherLoginNum":0,"userNum":1589,"workNum":0}
[INFO ] [2020-02-11 00:00:08] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data end at 1581350408805 spent 4359 ms ]
[INFO ] [2020-02-11 00:00:08] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data start at 1581350408806 ]
[INFO ] [2020-02-11 00:00:08] com.benli.analysis.services.impl.RealtimeListenerService MQ message : {"logType":0,"opId":"003009001013","success":false,"terminalIP":"183.226.60.54","terminalType":4,"terminalVersion":"PC-Client 1.0.0.196","time":1581350400295,"userId":"-1","userInfo":{"pwd":"410808d975a795f7b0e57ed65c96a2f1","type_class":"com.benli","uid":-1,"user_id":-1,"user_type":0,"username":"benli002"},"userTypeString":"com.benli"}
[ERROR] [2020-02-11 00:00:08] com.benli.analysis.factory.entrance.LoginEntrance 用户信息错误:{"logType":0,"opId":"003009001013","success":false,"terminalIP":"182.221.70.54","terminalType":4,"terminalVersion":"PC-Client 3.0.0.196","time":1581350400295,"userId":"-1","userInfo":{"pwd":"410808d975a795f7b0e57ed65c96a2f1","type_class":"com.benli","uid":-1,"user_id":-1,"user_type":0,"username":"benli001"},"userTypeString":"com.benli"}
[INFO ] [2020-02-11 00:00:08] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data end at 1581350408808 spent 2 ms ]
[INFO ] [2020-02-11 00:00:08] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data start at 1581350408808 ]
[INFO ] [2020-02-11 00:00:08] com.benli.analysis.services.impl.RealtimeListenerService MQ message : {"extend":{"bookId":"B9FC101","courseId":54072,"duration":1187},"logType":"OPERATION","opId":"003002001031","success":true,"terminalType":"PC-Client 3.0.0.196","time":1581350400853,"userId":2330966}
[INFO ] [2020-02-11 00:00:11] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data end at 1581350411057 spent 2249 ms ]
[INFO ] [2020-02-11 00:00:11] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data start at 1581350411062 ]
[INFO ] [2020-02-11 00:00:11] com.benli.analysis.services.impl.RealtimeListenerService MQ message : {"extend":{"bookId":"0DEB806","courseId":126900,"duration":10},"logType":"OPERATION","opId":"003002001031","success":true,"terminalType":"Android-Moblie HUAWEI DRA-AL00 8.1.0 4.12.0","time":1581350400979,"userId":6160737}
[ERROR] [2020-02-12 00:05:09] com.benli.analysis.factory.entrance.LoginEntrance 用户信息错误:{"logType":0,"l":"003009001013","success":false,"terminalIP":"183.225.70.99","terminalType":4,"terminalVersion":"Moblie-Client 1.0.0.199","time":1581350400295,"userId":"-1","userInfo":{"pwd":"410808d975a795f7b0e57ed65c96a2f1","type_class":"com.benli","uid":-1,"user_id":-1,"user_type":0,"username":"benli005"},"userTypeString":"com.benli"}
[INFO ] [2020-02-11 00:00:15] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data end at 1581350415318 spent 4256 ms ]
[INFO ] [2020-02-11 00:00:15] com.benli.analysis.services.impl.RealtimeListenerService [ processing a piece of data start at 1581350415335 ]