如何使用Python从LogFolder grep多行模式

2024-04-29 15:37:27 发布

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

我需要从服务器日志文件捕获json请求。 日志目录每天都有很多server.log文件。我需要根据关键字从日志文件中grep选择性json

接收到包含内容的请求是Server.log文件中的my关键字

如何根据所提到的关键字检索选定的json?对于下面提到的代码,只打印第一行。如何打印完整的JSON

代码

import glob, os,re
os.chdir("N:/HERE/jboss-eap-7.1.0/jboss-eap-7.1/standalone/log")

for file in glob.glob("server.log.2020-08-07"):
    print(file)

pattern = "Received request with content"

file = open("server.log.2020-08-07", "r")
for line in file:
    if re.search(pattern, line,re.M):
        print(line)

电流输出

2020-08-07 20:45:16,696 DEBUG [org.kie.server.remote.rest.drools.CommandResource] (default task-38) Received request with content '{

预期产出

2020-08-07 20:45:16,696 DEBUG [org.kie.server.remote.rest.drools.CommandResource] (default task-33) Received request with content '{
    "lookup": "stateless",
    "commands": [{
            "insert": {
                "out-identifier": "PolicyOutput",
                "return-object": false,
                "entry-point": "DEFAULT",
                "object": {
                    "com.Testing.sampleproject.PercentageCalculation": {

                        "total_Sales_Of_Latest_Year": 1000,
                        "total_Sales_Of_Previous_Year": 9000,
                        "pbdit": 0,
                        "turnover": 0,
                        "cash_Profit_Of_Latest_Year": 0,
                        "cash_Profit_Of_Previous_Year": 0,
                        "pat_Sales_Of_Latest_Year": 0
                        }
                    }   } }]
}'

Server.log文件

2020-08-07 20:36:29,897 DEBUG [org.kie.server.remote.rest.drools.CommandResource] (default task-33) Received request with content '{
    "lookup": "stateless",
    "commands": [{
            "insert": {
                "out-identifier": "PolicyOutput",
                "return-object": false,
                "entry-point": "DEFAULT",
                "object": {
                    "com.Testing.sampleproject.PercentageCalculation": {
                        "total_Sales_Of_Latest_Year": 1000,
                        "total_Sales_Of_Previous_Year": 9000,
                        "pbdit": 0,
                        "turnover": 0,
                        "cash_Profit_Of_Latest_Year": 0,
                        "cash_Profit_Of_Previous_Year": 0,
                        "pat_Sales_Of_Latest_Year": 0
                        }
                    }   } }]
}'
2020-08-07 20:36:29,899 DEBUG [org.kie.server.services.impl.locator.LatestContainerLocator] (default task-33) Searching for latest container for alias SampleProject within available containers [KieContainerResource [containerId=SampleProject_1.0.1-SNAPSHOT, releaseId=com.Testing:SampleProject:1.0.1-SNAPSHOT, resolvedReleaseId=com.Testing:SampleProject:1.0.1-SNAPSHOT, status=STARTED], KieContainerResource [containerId=SampleProject_1.0.2-SNAPSHOT, releaseId=com.Testing:SampleProject:1.0.2-SNAPSHOT, resolvedReleaseId=com.Testing:SampleProject:1.0.2-SNAPSHOT, status=STARTED]]
2020-08-07 20:36:46,807 DEBUG [org.kie.server.controller.impl.KieServerInstanceManager] (Thread-139) Using client provider org.kie.server.controller.websocket.client.WebSocketKieServerClientProvider@56675f4a
2020-08-07 20:36:46,807 DEBUG [org.kie.server.controller.impl.KieServerInstanceManager] (Thread-139) Using client org.kie.server.controller.websocket.client.WebSocketKieServerClient@404d94c0
2020-08-07 21:36:29,897 DEBUG [org.kie.server.remote.rest.drools.CommandResource] (default task-33) Received request with content '{
    "lookup": "stateless",
    "commands": [{
            "insert": {
                "out-identifier": "PolicyOutput",
                "return-object": false,
                "entry-point": "DEFAULT",
                "object": {
                    "com.Testing.sampleproject.PercentageCalculation": {

                        "total_Sales_Of_Latest_Year": 1000,
                        "total_Sales_Of_Previous_Year": 9000,
                        "pbdit": 0,
                        "turnover": 0,
                        "cash_Profit_Of_Latest_Year": 0,
                        "cash_Profit_Of_Previous_Year": 0,
                        "pat_Sales_Of_Latest_Year": 0
                        }
                    }   } }]
}'

Tags: oforgdebugsampleprojectcomobjectservercash
1条回答
网友
1楼 · 发布于 2024-04-29 15:37:27

以下是一种获得完整json的方法,假设已知json的行数

with open("server.log", "r") as fd:
    lines=fd.readlines()
    for i,line in enumerate(lines):
        if re.search(pattern, line, re.M):
            print(i)
            for op_json_line in lines[i:i+18]:
                print(op_json_line)

相关问题 更多 >