반응형
다른 파이썬 로그 핸들러에 대해 다른 수준을 설정하는 방법
나는 이것에 대한 몇 개의 게시물을 읽었지만 여전히 혼란 스럽습니다. 이 로깅 설정이 있습니다.
import logging
class MongoHandler(logging.Handler):
def __init__(self):
logging.Handler.__init__(self)
from pymongo import Connection
self.db = Connection('db_server').db_name
def emit(self, record):
try:
self.db.Logging.save(record.__dict__)
except:
print 'Logging Error: Unable to save log entry to db'
mh = MongoHandler()
sh = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(threadName)s - %(levelname)s - %(message)s')
sh.setFormatter(formatter)
log = logging.getLogger('DeviceMonitor_%s' % hostname)
log.addHandler(mh)
log.addHandler(sh)
log.setLevel(logging.INFO)
StreamHandler와 MongoHandler에 대해 다른 수준을 설정할 수 있기를 원합니다. 가능합니까 아니면 두 번째 Logger obj가 필요합니까?
각 로깅 처리기에 대해 다른 로깅 수준을 설정할 수 있지만 로거의 수준을 "최저"로 설정해야 할 것 같습니다. 아래 예제에서는 로거를 DEBUG로, 스트림 핸들러를 INFO로, TimedRotatingFileHandler를 DEBUG로 설정했습니다. 따라서 파일에는 DEBUG 항목이 있고 스트림은 INFO 만 출력합니다. DEBUG 만 하나에, INFO 만 다른 핸들러에 보낼 수는 없습니다. 이를 위해서는 다른 로거가 필요합니다.
logger = logging.getLogger("mylog")
formatter = logging.Formatter('%(asctime)s | %(name)s | %(levelname)s: %(message)s')
logger.setLevel(logging.DEBUG)
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
stream_handler.setFormatter(formatter)
logFilePath = "my.log"
file_handler = logging.handlers.TimedRotatingFileHandler(filename = logFilePath, when = 'midnight', backupCount = 30)
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
logger.info("Started");
try:
x = 14
y = 0
z = x / y
except Exception as ex:
logger.error("Operation failed.")
logger.debug("Encountered {0} when trying to perform calculation.".format(ex))
logger.info("Ended");
GrantVS의 답변에 추가 :
나는 사용해야했다
logging.basicConfig(level=logging.DEBUG)
작동하려면. 그렇지 않으면 훌륭한 대답, 감사합니다!
마리오
PS: For some reason the system doesn't let me comment GrantVS's answer directly.
I needed a time to understand the point
- Set the general logger below your subloggers (handlers) (your result of logging.getLogger())
- Set your subloggers levels on an equal or superior level to your general logger
ReferenceURL : https://stackoverflow.com/questions/11111064/how-to-set-different-levels-for-different-python-log-handlers
반응형
'programing' 카테고리의 다른 글
시간대가없는 PostgreSQL 변경 유형 타임 스탬프-> 시간대 포함 (0) | 2021.01.15 |
---|---|
bash에서 :-( 콜론 대시) 사용 (0) | 2021.01.15 |
이중 피벗 퀵 정렬과 퀵 정렬의 차이점은 무엇입니까? (0) | 2021.01.15 |
Python 3.x에서 2.x와 유사한 정렬 동작을 얻으려면 어떻게해야합니까? (0) | 2021.01.15 |
Swift의 일반 유형 별칭 (0) | 2021.01.15 |