12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # -*- coding:utf-8 -*-
- """
- @author: isaacqyang
- @time: 2022/8/29
- @desc:
- """
- import datetime
- import logging
- import logging.handlers
- import os
- import threading
- import time
- from os.path import dirname, realpath
- import pytz
- def my_time(*args):
- return time.strptime(datetime.datetime.now(pytz.timezone("Asia/Shanghai")).strftime("%Y-%m-%d %H:%M:%S"),
- "%Y-%m-%d %H:%M:%S")
- _instance_lock = threading.Lock()
- logger_map = {}
- def get_logger(logger_name: str = None) -> logging.Logger:
- if logger_name is None:
- logger_name = "mylog"
- if logger_name in logger_map.keys():
- return logger_map.get(logger_name)
- with _instance_lock:
- if logger_name in logger_map.keys():
- return logger_map.get(logger_name)
- _logger = logging.Logger(logger_name)
- _logger.setLevel(logging.INFO)
- formatter = logging.Formatter(
- "[%(asctime)s] [%(levelname)s] [%(threadName)s] [%(filename)s] [func:%(funcName)s line:%(lineno)d]\n %(message)s")
- formatter.converter = my_time
- log_path = os.path.join(dirname(dirname(realpath(__file__))), "logs")
- filename = os.path.join(log_path, f"{logger_name}.log")
- if not os.path.exists(dirname(filename)):
- os.makedirs(dirname(filename))
- handler = logging.handlers.TimedRotatingFileHandler(filename, when="MIDNIGHT", interval=7, backupCount=4,
- encoding="utf8", atTime=datetime.time(0, 0, 0, 0))
- console_handler = logging.StreamHandler()
- print(f"日志路径:{filename}")
- handler.setFormatter(formatter)
- console_handler.setFormatter(formatter)
- _logger.addHandler(handler)
- _logger.addHandler(console_handler)
- logger_map[logger_name] = _logger
- return _logger
|