Python에서 로그 파일 구문 분석

Vaibhav Vaibhav 2022년1월22일
Python에서 로그 파일 구문 분석

로그 파일에는 소프트웨어 시스템 또는 응용 프로그램을 실행하는 동안 발생하는 이벤트에 대한 정보가 포함됩니다. 이러한 이벤트에는 오류, 사용자 요청, 버그 등이 포함됩니다. 개발자는 시스템의 잠재적인 문제를 파악하고, 더 새롭고 더 나은 솔루션을 구현하고, 전체 디자인을 개선하기 위해 사용에 대한 이러한 세부 정보를 추가로 스캔할 수 있습니다. 로그 파일은 시스템의 보안에 대해 많은 것을 드러낼 수 있으며, 이는 개발자가 시스템 또는 애플리케이션을 개선하는 데 도움이 됩니다.

일반적으로 로그 파일 내의 항목에는 형식이나 패턴이 있습니다. 예를 들어, 소프트웨어 시스템은 타임스탬프, 로그 메시지, 메시지 유형의 세 가지를 인쇄하는 형식을 가질 수 있습니다. 이러한 형식은 가독성 및 관리 목적을 위해 올바른 형식의 텍스트로 구조화된 정보의 양에 제한이 없습니다.

이러한 로그 파일에 대한 분석을 수행하기 위해 모든 프로그래밍 언어를 고려할 수 있습니다. 그러나 이 기사에서는 Python을 사용하여 이러한 로그 파일을 구문 분석하는 방법에 대해 구체적으로 설명합니다. 그럼에도 불구하고 프로세스 이면의 이론은 모든 프로그래밍 언어에서 동일하게 유지됩니다. Python 코드를 다른 프로그래밍 언어로 쉽게 번역하여 필요한 작업을 수행할 수 있습니다.

Python에서 로그 파일 구문 분석

위에서 언급했듯이 로그 파일 내부의 항목에는 특정 형식이 있습니다. 즉, 이 형식을 활용하여 로그 파일 내부에 기록된 정보를 한 줄씩 구문 분석할 수 있습니다. 예를 들어 이것을 이해하려고 노력합시다.

웹 애플리케이션에 사용되는 다음 로그 형식을 고려하십시오. 여기에는 날짜 및 시간 또는 타임스탬프(yyyy-mm-dd hh:mm:ss 형식), 액세스한 URL, 로그 메시지 유형(성공, 오류 등)이라는 네 가지 중요한 세부 정보가 있습니다. 및 로그 메시지.

DateTime | URL | Log - Type | Log

이제 위에서 언급한 형식의 로그가 포함된 log.txt 파일을 고려하십시오. log.txt 파일은 다음과 같습니다.

2021-10-26 10:26:44 | https://website.com/home | SUCCESS | Message
2021-10-26 10:26:54 | https://website.com/about | SUCCESS | Message
2021-10-26 10:27:01 | https://website.com/page | ERROR | Message
2021-10-26 10:27:03 | https://website.com/user/me | SUCCESS | Message
2021-10-26 10:27:04 | https://website.com/settings/ | ERROR | Message
...

다음 Python 코드는 이 로그 파일을 읽고 사전 내부에 정보를 저장합니다. order 변수는 모든 사전 키를 단일 로그와 동일한 순서로 저장합니다. 로그 형식에는 |가 있으므로 이를 사용하여 로그 문자열을 요소로 분할하고 원하는 대로 추가 저장할 수 있습니다.

import json

file_name = "log.txt"
file = open(file_name, "r")
data = []
order = ["date", "url", "type", "message"]

for line in file.readlines():
    details = line.split("|")
    details = [x.strip() for x in details]
    structure = {key: value for key, value in zip(order, details)}
    data.append(structure)

for entry in data:
    print(json.dumps(entry, indent=4))

‘출력’

{
    "date": "2021-10-20 10:26:44",
    "url": "https://website.com/home",
    "type": "SUCCESS",
    "message": "Message",
}
{
    "date": "2021-10-20 10:26:54",
    "url": "https://website.com/about",
    "type": "SUCCESS",
    "message": "Message",
}
{
    "date": "2021-10-20 10:27:01",
    "url": "https://website.com/page",
    "type": "ERROR",
    "message": "Message",
}
{
    "date": "2021-10-20 10:27:03",
    "url": "https://website.com/user/me",
    "type": "SUCCESS",
    "message": "Message",
}
{
    "date": "2021-10-20 10:27:04",
    "url": "https://website.com/settings/",
    "type": "ERROR",
    "message": "Message",
}

정보를 읽은 후에는 추가 작업을 수행할 수 있습니다. 향후 분석을 위해 데이터베이스에 저장하고 NumPyMatplotlib를 가져오고 일부 그래프를 그려 정보를 그래픽 방식으로 이해할 수 있습니다. ERROR 태그로 로그를 필터링하고 사용자가 직면한 오류를 검색하거나 스팸 또는 무단 액세스와 같은 일부 의심스러운 활동이나 보안 위반을 조심하십시오. 기회는 무한하며 개발자 또는 데이터 과학자가 획득한 데이터에서 무엇을 배우려고 하느냐에 달려 있습니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.