Python에는 print라는 기능이 있다. 보통은 이 기능을 통해서 output을 확인한다.
그러나 print로는 output을 확인할 수 없는 경우가 있다. 필자는 airflow의 에러 로그가 print로는 확인되지 않아 logging 모듈을 활용했다.
logging에서는 print보다 좀 더 다양한 기능을 제공하니, 한 번 알아보도록 하자! 😀
1. logging 모듈
먼저 logging 모듈에 대해서 알아보자
1. log 출력 기준
log가 출력되는 기준을 설정합니다.
출력 기준을 ERROR로 두게 된다면 그 아래 수준인 DEBUG/INFO/WARNING을 출력되지 않는다.
2. log 출력 형식
- asctime: 일자를 나타냅니다.
- levelname: 출력 수준을 나타냅니다.
- message: 출력 내용을 나타냅니다.
3. log 출력 / 파일에 출력
- StreamHandler: 콘솔에 출력합니다.
- FileHandler: 파일로 출력합니다.
2. Logger 클래스화
많은 python 파일에서 작업하다보면 그때마다 Logger를 정의하는 것이 비효율적으로 느껴질 때가 있다. 그래서 클래스로 정의하고, 필요할 때마다 불러왔다.
코드를 확인해보면 두 가지 특징이 있다.
1. if len(self.logger.handlers) == 0
handler에 계속해서 logging을 등록하게 되면 중복으로 로그를 출력할 가능성이 있다. 이를 방지하기 위해서 추가된 코드이다.
2. self.file_name = os.path.basename(file)
로그를 출력하는 파일명을 확인하고 싶었다. 그래서 추가한 코드이다.
참고
https://stickode.tistory.com/209
https://minimin2.tistory.com/41
'Engineering 💻 > Python' 카테고리의 다른 글
[Python] 참조한 모듈이 다른 모듈을 참조할 수 없는 경우 해결 (다른 모듈 참조하기) (0) | 2022.02.18 |
---|---|
[Python] 크롤링 방법과 비교 (requests, BeautifulSoup, selenium) (1) | 2022.02.17 |