"""
|
日志
|
"""
|
import queue
|
import sys
|
import time
|
|
from loguru import logger
|
import constant
|
from utils import tool
|
|
|
class MyLogger:
|
def __init__(self):
|
logger.remove()
|
|
# 显示在控制台
|
# logger.add(sys.stdout,
|
# filter=lambda record: record["extra"].get("name") == "l2_trade", enqueue=True)
|
|
logger.add(self.get_path("first_code", "first_code_record"),
|
filter=lambda record: record["extra"].get("name") == "first_code_record",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("debug", "debug"),
|
filter=lambda record: record["extra"].get("name") == "debug",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("kpl", "kpl_limit_up_reason_change"),
|
filter=lambda record: record["extra"].get("name") == "kpl_limit_up_reason_change",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("kpl", "kpl_limit_up"),
|
filter=lambda record: record["extra"].get("name") == "kpl_limit_up",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("kpl", "kpl_debug"),
|
filter=lambda record: record["extra"].get("name") == "kpl_debug",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
# 看盘日志
|
logger.add(self.get_path("kp", "kp_msg"),
|
filter=lambda record: record["extra"].get("name") == "kp_msg",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("redis", "redis_debug"),
|
filter=lambda record: record["extra"].get("name") == "redis_debug",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("profile", "profile"),
|
filter=lambda record: record["extra"].get("name") == "profile",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("request", "request_debug"),
|
filter=lambda record: record["extra"].get("name") == "request_debug",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
def get_path(self, dir_name, log_name):
|
path_str = "{}/logs/gp/{}/{}".format(constant.get_path_prefix(), dir_name, log_name) + ".{time:YYYY-MM-DD}.log"
|
# print(path_str)
|
return path_str
|
|
def get_logger(self, log_name):
|
return logger.bind(name=log_name)
|
|
|
__mylogger = MyLogger()
|
|
logger_first_code_record = __mylogger.get_logger("first_code_record")
|
|
logger_debug = __mylogger.get_logger("debug")
|
|
logger_kpl_limit_up_reason_change = __mylogger.get_logger("kpl_limit_up_reason_change")
|
|
logger_kpl_limit_up = __mylogger.get_logger("kpl_limit_up")
|
|
logger_kpl_debug = __mylogger.get_logger("kpl_debug")
|
|
logger_kp_msg = __mylogger.get_logger("kp_msg")
|
|
logger_redis_debug = __mylogger.get_logger("redis_debug")
|
|
logger_profile = __mylogger.get_logger("profile")
|
|
logger_request_debug = __mylogger.get_logger("request_debug")
|
|
|
class AsyncLogManager:
|
__log_queue = queue.Queue()
|
|
def __add_log(self, logger, method, *args):
|
self.__log_queue.put_nowait((logger, time.time(), method, args))
|
|
def debug(self, logger, *args):
|
self.__add_log(logger, "debug", *args)
|
|
def info(self, logger, *args):
|
self.__add_log(logger, "info", *args)
|
|
def warning(self, logger, *args):
|
self.__add_log(logger, "warning", *args)
|
|
def error(self, logger, *args):
|
self.__add_log(logger, "error", *args)
|
|
def exception(self, logger, *args):
|
self.__add_log(logger, "exception", *args)
|
|
# 运行同步日志
|
def run_sync(self):
|
while True:
|
try:
|
val = self.__log_queue.get()
|
time_s = val[1]
|
cmd = val[2]
|
method = getattr(val[0], cmd)
|
d = list(val[3])
|
d[0] = f"[{tool.to_time_str(int(time_s))}.{str(time_s).split('.')[1][:3]}] " + d[0]
|
d = tuple(d)
|
method(*d)
|
except:
|
pass
|
|
|
async_log_util = AsyncLogManager()
|
|
|
def request_info(type_name, content, thread_id=None):
|
if not thread_id:
|
thread_id = tool.get_thread_id()
|
async_log_util.info(logger_request_debug, f"【{thread_id}】【{type_name}】 {content}")
|