1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # -*- 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
- from commom.traceId_util import TraceIdFilter
- 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 = "app"
- 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)
- _logger.addFilter(TraceIdFilter())
- formatter = logging.Formatter(
- '[%(asctime)s] [requestId-%(requestId)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))
- print(f"日志路径:{filename}")
- handler = logging.handlers.TimedRotatingFileHandler(filename, when="MIDNIGHT", interval=30, backupCount=4,
- encoding="utf8", atTime=datetime.time(0, 0, 0, 0))
- handler.setFormatter(formatter)
- _logger.addHandler(handler)
- console_handler = logging.StreamHandler()
- console_handler.setFormatter(formatter)
- _logger.addHandler(console_handler)
- logger_map[logger_name] = _logger
- return _logger
|