Python의 로깅 라이브러리의 도움으로 Log4j 사용

Salman Mehmood 2023년6월21일
  1. Log4j 개요 및 사용의 중요성
  2. Python에서 logging 라이브러리의 도움으로 Log4j 사용
Python의 로깅 라이브러리의 도움으로 Log4j 사용

이 기사에서는 log4j가 무엇이고 어떻게 작동하며 왜 사용해야 하는지 설명합니다. 또한 logging 라이브러리의 도움으로 Python 프로그래밍 언어 내에서 log4j를 사용하는 방법도 알아봅니다.

Log4j 개요 및 사용의 중요성

log4j는 프로그래머가 애플리케이션에서 데이터를 logging할 때 도움을 주기 위해 활용하는 소프트웨어입니다. 그리고 로깅 데이터는 애플리케이션에서 수행된 활동 또는 작업에 대한 일기를 유지하는 것을 의미합니다.

다양한 인증을 보는 것과 같은 보안상의 이유로 log4j를 사용할 수 있습니다. 그러나 디버깅 목적으로 애플리케이션에서 발생한 일을 기록하기 위한 것일 수도 있습니다.

또는 일반적으로 응용 프로그램이 수행한 작업을 알고 있습니다. 예를 들어 log4j는 세미 빌드 애플리케이션인 Java 프로그래밍 언어의 프레임워크입니다.

마찬가지로 Python에서는 log4j 대신 logging 모듈을 사용했습니다. 로깅은 응용 프로그램 작업 및 상태를 보조 인터페이스에 기록하는 프로세스입니다. 즉, 프로그램 작업을 파일에 기록하지만 로깅을 시작하는 방법은 무엇입니까?

음, 로깅 수준에 익숙해져야 합니다. 모든 로깅 라이브러리를 사용하면 특정 수준에서 정보를 잠글 수 있습니다. 알아야 할 다섯 가지 기본 로깅 수준이 있습니다.

레벨 설명
debug 디버그 수준은 개발 프로세스 또는 버그 수정 및 문제 해결 중에 사용됩니다. 모든 개발자별 정보는 이 수준 아래에 있습니다.
info 정보 수준은 기본 사용자 또는 시스템 보기 작업과 같은 프로그램의 중요한 기본 작업을 로깅하는 데 사용됩니다.
warning 경고 수준은 잠재적으로 장기적으로 오류가 될 수 있는 로깅 이벤트에 사용됩니다. 이 로깅 수준은 오류를 추적하는 데 도움이 됩니다.
error 오류 수준은 오류를 기록하는 데 사용되며 오류는 잘못된 방식으로 프로그램 실행에 영향을 줄 수 있는 실수입니다.
critical 중요 수준은 최후의 날입니다. 프로그램이 죽었거나 심하게 손상되었습니다.

Python에서 logging 라이브러리의 도움으로 Log4j 사용

이제 우리는 간단한 기본 코드를 실행할 것이고 그러한 논리는 없지만 파일 내부에 모든 로그를 작성할 수 있는 방법과 같은 약간의 이해를 보여주고 싶습니다.

코드로 이동하여 먼저 logging 시스템을 구성하고 basicConfig() 메서드를 호출한 다음 filename 매개변수를 사용하여 파일 이름을 전달합니다. Python은 이 파일에 모든 로그 메시지를 씁니다. 존재하지 않으면 Python이 생성합니다.

다음 매개변수는 filemode로, 파일 모드는 쓰기 모드에 대한 추가 모드인지 또는 거기에 무엇을 넣느냐를 의미하며 기본적으로 파일은 추가 모드로 생성됩니다. 다음은 asctime, levelnamemessage와 같은 많은 정보를 나타내는 format입니다.

asctime은 기본적으로 로그와 관련된 이 특정 텍스트 파일 내부에 어떤 종류의 시간을 인쇄하고 있는지 보여줍니다. 두 번째 매개변수 값은 levelname이라고 하는 것입니다. 이 매개변수는 실행 중에 발생한 오류의 종류를 보여줍니다.

메시지는 해당 로그 메시지 안에 인쇄하려는 모든 메시지입니다. 우리는 datefmt를 사용하고 있습니다. 이 매개변수는 특정 순서로 시간을 인쇄합니다.

basicConfig() 함수에는 다른 속성이 있으며 여기에서 모든 속성에 대해 읽을 수 있습니다.

import logging

logging.basicConfig(
    filename="demo.txt",
    filemode="a",
    format="%(asctime)s %(levelname)s-%(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)

이제 우리는 백분위수를 일부 숫자와 비교하고 텍스트 파일 내부에 일부 로그를 추가하는 간단한 논리를 작성했습니다.

for i in range(0, 15):
    if i % 2 == 0:
        logging.error("Log error message")
    elif i % 3 == 0:
        logging.warning("Log warning message")
    elif i % 5 == 0:
        logging.debug("Log debug message")
    elif i % 7 == 0:
        logging.critical("Log critical message")
    else:
        logging.info("Log info message")

출력:

2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 CRITICAL-Log critical message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message

프로그램을 실행한 후, 기본적으로 levelnameerror를 호출하고 error 수준은 infodebug를 표시하지 않기 때문에 infodebug로그가 텍스트 파일 내에 추가되지 않음을 알 수 있습니다..

그러나 logging.DEBUG를 전달하는 동안 level 매개 변수를 사용하여 다른 수준을 사용할 수 있습니다.

level = logging.DEBUG

이제 demo.txt 파일을 실행하고 열면 모든 로그 메시지가 표시되지만 로그 수준을 logging.ERROR로 업데이트하면 errorcritical 메시지가 표시됩니다.

2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 DEBUG-Log debug message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 CRITICAL-Log critical message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message

숫자를 0으로 나누는 일반적인 문제를 봅시다. 이 작업을 결정하기 위해 try 블록을 사용합니다.

작업이 실패하면 제외 블록 내부로 이동하여 로그 오류를 표시합니다.

try:
    1 / 0
except:
    logging.error("Log zero division error occurs")

출력:

2022-09-02 00:29:48 ERROR-Log zero division error occurs

프로젝트에서 작업할 때마다 이러한 종류의 로깅 메커니즘을 작성해야 하기 때문에 이는 프로젝트의 필수 부분입니다.

완전한 Python 코드:

import logging

logging.basicConfig(
    filename="demo.txt",
    filemode="w",
    format="%(asctime)s %(levelname)s-%(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
    level=logging.DEBUG,
)

# for i in range(0,15):
#     if i%2==0:
#         logging.error('Log error message')
#     elif i%3==0:
#         logging.warning('Log warning message')
#     elif i%5==0:
#         logging.debug('Log debug message')
#     elif i%7==0:
#         logging.critical('Log critical message')
#     else:
#         logging.info('Log info message')

try:
    1 / 0
except:
    logging.error("Log zero division error occurs")
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Python Logging