import sys
import queue
import logging
from logging.handlers import QueueHandler
from logging.handlers import QueueListener
log_queue = queue.Queue(-1)
def get_queue_logger():
logger = logging.getLogger()
logger.setLevel(logging.INFO)
queue_handler = QueueHandler(log_queue)
logger.addHandler(queue_handler)
return logger
def start_queue_listener():
formatter = logging.Formatter(
'%(thread)d %(asctime)s %(filename)s[line:%(lineno)d] %(funcName)s %(levelname)s %(message)s')
stdout_handler = logging.StreamHandler(sys.__stdout__)
stdout_handler.level = logging.INFO
stdout_handler.formatter = formatter
listener = QueueListener(log_queue, stdout_handler)
listener.start()
logger = get_queue_logger()
start_queue_listener()
if __name__ == '__main__':
logger.info("example")