BufferingHandler
을 서브 클래스 화하여 logging.handlers 모듈에 서브 클래 싱하여 사용자 정의 플러시 전략을 추가하고 있습니다. logging.handlers.BufferingHandler 로그를 두 번 표시하는 서브 클래 싱 된 핸들
from logging.handlers import BufferingHandler
import logging
LOG_FORMAT = '%(asctime)s %(levelname)s: %(message)s'
logger = logging.getLogger('LogArchiver')
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter(LOG_FORMAT)
class MyLogHandler(BufferingHandler):
def __init__(self, capacity):
logging.handlers.BufferingHandler.__init__(self, capacity)
def flush(self):
for record in self.buffer:
print(self.format(record))
#pass
def shouldFlush(self, record):
return False
h = MyLogHandler(1000)
h.setLevel(logging.INFO)
h.setFormatter(formatter)
logger.addHandler(h)
if __name__ == '__main__':
for i in range(5):
logger.info('test %s', i)
이
는 잘 작동하지만 BufferingHandler 내가 원하는 해달라고 기본적으로 콘솔에 홍조처럼 두 번 로그 선을 보이고있다. 내가 콘솔에 여분의 높이를보고하고 어디 그것의 인쇄 ..[email protected]:/mnt/tmp/alok# python /tmp/testlog.py
2017-11-29 15:01:07,480 INFO: test 0
2017-11-29 15:01:07,480 INFO: test 1
2017-11-29 15:01:07,480 INFO: test 2
2017-11-29 15:01:07,480 INFO: test 3
2017-11-29 15:01:07,480 INFO: test 4
2017-11-29 15:01:07,480 INFO: test 0
2017-11-29 15:01:07,480 INFO: test 1
2017-11-29 15:01:07,480 INFO: test 2
2017-11-29 15:01:07,480 INFO: test 3
2017-11-29 15:01:07,480 INFO: test 4
이 만
[email protected]:/mnt/tmp/alok# python /tmp/testlog.py
2017-11-29 15:01:07,480 INFO: test 0
2017-11-29 15:01:07,480 INFO: test 1
2017-11-29 15:01:07,480 INFO: test 2
2017-11-29 15:01:07,480 INFO: test 3
2017-11-29 15:01:07,480 INFO: test 4
을 제가 기대를 인쇄해야합니까?
로그를 어떻게 확인합니까? 스크립트가 실행되면'tail -f' 또는 로그 파일을 여는 중입니까? – NoobEditor
해당 사용자 지정 처리기 및 인쇄 로그 만 콘솔에만 사용하고 있습니다. 'FileHandler'를 사용하지 않고 로그를 모니터하기 위해'tail -f' 포인트가 없습니다. –