工作中需要及时解决线上的 bug,所以,及时获取 log 中的 warning,error 是非常有必要的。
1 import logging
2 import logging.handlers
3
4 class EncodingFormatter(logging.Formatter):
5 def __init__(self, fmt, datefmt=None, encoding=None):
6 logging.Formatter.__init__(self, fmt, datefmt)
7 self.encoding = encoding
8
9
10 def get_logger(logger_name, logger_level, logger_location, days):
11 logger = logging.getLogger(logger_name)
12 logger.setLevel(logger_level)
13
14 log_format = "%(name)s\t%(asctime)s\t%(pathname)s\t[line:%(lineno)d]\t %(levelname)s\t %(message)s"
15 formater = logging.Formatter(log_format)
16
17 # 存入文件的日志
18 handler = logging.handlers.TimedRotatingFileHandler(logger_location, "midnight", 1, days, encoding="utf-8")
19 handler.suffix = "%Y%m%d"
20 handler.setFormatter(formater)
21 logger.addHandler(handler)
22
23 # 发邮件的日志
24 sh = logging.handlers.SMTPHandler("smtp