Process, Thread, Main 함수 로그를 파일에 저장하는 logging Python 예제Python/Python 예제 코드2023. 10. 11. 22:08
Table of Contents
반응형
Process, Thread, Main 함수의 로그를 파일로 저장하는 logging Python 예제 코드입니다.
2022. 12. 25 최초작성
import logging import logging.handlers import multiprocessing import threading def listener_configurer(): root = logging.getLogger() h = logging.handlers.RotatingFileHandler('log_test.txt', 'w', 0, 0) f = logging.Formatter('%(asctime)s %(processName)-10s %(name)s %(levelname)-8s %(message)s') h.setFormatter(f) root.addHandler(h) def listener_process(queue, configurer): configurer() while True: try: record = queue.get() if record is None: break logger = logging.getLogger(record.name) logger.handle(record) except Exception: import sys, traceback print('Whoops! Problem:', file=sys.stderr) traceback.print_exc(file=sys.stderr) def worker_configurer(queue): h = logging.handlers.QueueHandler(queue) root = logging.getLogger() root.addHandler(h) root.setLevel(logging.INFO) def worker_thread(continent): logger = logging.getLogger('[worker_thread]') for i in range(100): logger.log(logging.INFO, f'print {continent} {i}') def worker_process(continent,queue,worker_configurer): worker_configurer(queue) logger = logging.getLogger('[worker_process]') for i in range(100): logger.log(logging.INFO, f'print {continent} {i}') if __name__ == "__main__": queue = multiprocessing.Queue(-1) listener = multiprocessing.Process(target=listener_process, args=(queue, listener_configurer)) listener.start() names = ['America', 'Europe', 'Africa'] # 프로세스는 따로 사용합니다. procs = [] for name in names: proc = multiprocessing.Process(target=worker_process, args=(name,queue,worker_configurer)) procs.append(proc) proc.start() # main 함수와 스레드가 공유합니다. worker_configurer(queue) logger = logging.getLogger('[main]') lp = threading.Thread(target=worker_thread, args=('Earth',)) lp.start() for i in range(200): logger.log(logging.INFO, f'main {i}') for proc in procs: proc.join() queue.put_nowait(None) listener.join() lp.join() |
원본 코드
반응형
'Python > Python 예제 코드' 카테고리의 다른 글
파이썬 딕셔너리를 파일에 저장했다가 로드하는 예제 - pickle, json (0) | 2023.10.11 |
---|---|
dask 사용해보기 (0) | 2023.10.11 |
파이썬에서 실행중인 프로세스 pid와 이름 출력하기 (0) | 2023.10.10 |
Python에서 Ctrl+C 감지하기 (0) | 2023.10.08 |
csv 파일을 여러 개 파일로 분리하는 python 예제 (0) | 2023.10.07 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!