drogon/core/my_logger.py

32 lines
804 B
Python
Raw Permalink Normal View History

2020-03-26 11:18:14 +01:00
import logging
import sys
class StreamToLogger(object):
"""
Fake file-like stream object that redirects writes to a logger instance.
"""
def __init__(self, logger, log_level=logging.INFO):
self.logger = logger
self.log_level = log_level
self.linebuf = ""
def write(self, buf):
for line in buf.rstrip().splitlines():
self.logger.log(self.log_level, line.rstrip())
logging.basicConfig(
filename="log.log",
format="%(asctime)s:%(levelname)s:%(name)s:%(message)s",
filemode="a+",
level=logging.DEBUG,
)
stdout_logger = logging.getLogger("STDOUT")
sl = StreamToLogger(stdout_logger, logging.INFO)
sys.stdout = sl
stderr_logger = logging.getLogger("STDERR")
sl = StreamToLogger(stderr_logger, logging.ERROR)
sys.stderr = sl