log messages < error is now output to stdout instead of stderr

This commit is contained in:
Selwin Ong 2020-07-31 10:54:27 +07:00
parent 167ab96070
commit 16af5face4
2 changed files with 8 additions and 2 deletions

View File

@ -3,6 +3,7 @@ from __future__ import (absolute_import, division, print_function,
unicode_literals)
import logging
import sys
from rq.utils import ColorizingStreamHandler
from rq.defaults import (DEFAULT_LOGGING_FORMAT,
@ -15,9 +16,14 @@ def setup_loghandlers(level=None, date_format=DEFAULT_LOGGING_DATE_FORMAT,
if not _has_effective_handler(logger):
formatter = logging.Formatter(fmt=log_format, datefmt=date_format)
handler = ColorizingStreamHandler()
handler = ColorizingStreamHandler(stream=sys.stdout)
handler.setFormatter(formatter)
handler.addFilter(lambda record: record.levelno < logging.ERROR)
error_handler = ColorizingStreamHandler(stream=sys.stderr)
error_handler.setFormatter(formatter)
error_handler.addFilter(lambda record: record.levelno >= logging.ERROR)
logger.addHandler(handler)
logger.addHandler(error_handler)
if level is not None:
# The level may be a numeric value (e.g. when using the logging module constants)

View File

@ -974,7 +974,7 @@ class Worker(object):
def handle_exception(self, job, *exc_info):
"""Walks the exception handler stack to delegate exception handling."""
exc_string = Worker._get_safe_exception_string(
traceback.format_exception_only(*exc_info[:2]) + traceback.format_exception(*exc_info)
traceback.format_exception(*exc_info)
)
self.log.error(exc_string, exc_info=True, extra={
'func': job.func_name,