"""
|
日志
|
"""
|
import datetime
|
import os
|
import sys
|
|
from loguru import logger
|
|
|
class MyLogger:
|
def __init__(self):
|
logger.remove()
|
# 每一天生成一个日志文件,历史日志文件采用zip压缩,异步写入日志
|
logger.add(self.get_path("trade", "trade_gui"),
|
filter=lambda record: record["extra"].get("name") == "trade_gui",
|
rotation="00:00", compression="zip", enqueue=True)
|
logger.add(self.get_path("trade", "trade"), filter=lambda record: record["extra"].get("name") == "trade",
|
rotation="00:00",
|
compression="zip")
|
logger.add(self.get_path("trade", "delegate"), filter=lambda record: record["extra"].get("name") == "delegate",
|
rotation="00:00",
|
compression="zip")
|
logger.add(self.get_path("l2", "l2_error"), filter=lambda record: record["extra"].get("name") == "l2_error",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("l2", "l2_process"), filter=lambda record: record["extra"].get("name") == "l2_process",
|
rotation="00:00", compression="zip", enqueue=True)
|
logger.add(self.get_path("l2", "l2_process_time"),
|
filter=lambda record: record["extra"].get("name") == "l2_process_time",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("l2", "l2_trade"), filter=lambda record: record["extra"].get("name") == "l2_trade",
|
rotation="00:00", compression="zip", enqueue=True)
|
# 显示在控制台
|
logger.add(sys.stdout,
|
filter=lambda record: record["extra"].get("name") == "l2_trade")
|
|
logger.add(self.get_path("l2", "l2_trade_cancel"),
|
filter=lambda record: record["extra"].get("name") == "l2_trade_cancel",
|
rotation="00:00", compression="zip", enqueue=True)
|
logger.add(self.get_path("l2", "l2_trade_buy"),
|
filter=lambda record: record["extra"].get("name") == "l2_trade_buy",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("l2", "l2_big_data"),
|
filter=lambda record: record["extra"].get("name") == "l2_big_data",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("juejin", "juejin_tick"),
|
filter=lambda record: record["extra"].get("name") == "juejin_tick",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("ths", "code_operate"),
|
filter=lambda record: record["extra"].get("name") == "code_operate",
|
rotation="00:00", compression="zip", enqueue=True)
|
# 显示在控制台
|
logger.add(sys.stdout,
|
filter=lambda record: record["extra"].get("name") == "code_operate")
|
|
logger.add(self.get_path("device", "device"), filter=lambda record: record["extra"].get("name") == "device",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
logger.add(self.get_path("system", "system"), filter=lambda record: record["extra"].get("name") == "system",
|
rotation="00:00", compression="zip", enqueue=True)
|
|
def get_path(self, dir_name, log_name):
|
return "D:/logs/gp/{}/{}".format(dir_name, log_name) + ".{time:YYYY-MM-DD}.log"
|
|
def get_logger(self, log_name):
|
return logger.bind(name=log_name)
|
|
|
__mylogger = MyLogger()
|
|
logger_trade_gui = __mylogger.get_logger("trade_gui")
|
logger_trade = __mylogger.get_logger("trade")
|
logger_trade_delegate = __mylogger.get_logger("delegate")
|
logger_l2_error = __mylogger.get_logger("l2_error")
|
logger_l2_process = __mylogger.get_logger("l2_process")
|
logger_l2_process_time = __mylogger.get_logger("l2_process_time")
|
|
logger_l2_trade = __mylogger.get_logger("l2_trade")
|
logger_l2_trade_cancel = __mylogger.get_logger("l2_trade_cancel")
|
logger_l2_trade_buy = __mylogger.get_logger("l2_trade_buy")
|
|
logger_l2_big_data = __mylogger.get_logger("l2_big_data")
|
logger_juejin_tick = __mylogger.get_logger("juejin_tick")
|
logger_code_operate = __mylogger.get_logger("code_operate")
|
logger_device = __mylogger.get_logger("device")
|
logger_system = __mylogger.get_logger("system")
|
|
|
class LogUtil:
|
@classmethod
|
def extract_log_from_key(cls, key, path, target_path):
|
fw = open(target_path, mode='w', encoding="utf-8")
|
try:
|
with open(path, 'r', encoding="utf-8") as f:
|
lines = f.readlines()
|
for line in lines:
|
if line.find("{}".format(key)) > 0:
|
fw.write(line)
|
finally:
|
fw.close()
|
|
|
# 导出数据处理位置日志
|
def __export_l2_pos_range(code, date, dir):
|
LogUtil.extract_log_from_key("{} 处理数据范围".format(code), "D:/logs/gp/l2/l2_process.{}.log".format(date),
|
"{}/l2_process_{}.log".format(dir, date))
|
|
|
# 导出交易日志
|
def __export_l2_trade_log(code, date, dir):
|
LogUtil.extract_log_from_key(code, "D:/logs/gp/l2/l2_trade.{}.log".format(date),
|
"{}/l2_trade_{}.log".format(dir, date))
|
|
|
# 导出交易取消日志
|
def __export_l2_trade_cancel_log(code, date, dir):
|
LogUtil.extract_log_from_key(code, "D:/logs/gp/l2/l2_trade_cancel.{}.log".format(date),
|
"{}/l2_trade_cancel_{}.log".format(dir, date))
|
|
|
def export_l2_log(code):
|
if len(code) < 6:
|
return
|
date = datetime.datetime.now().strftime("%Y-%m-%d")
|
dir_ = "D:/logs/gp/l2/{}".format(code)
|
if not os.path.exists(dir_):
|
os.mkdir(dir_)
|
__export_l2_pos_range(code, date, dir_)
|
__export_l2_trade_cancel_log(code, date, dir_)
|
__export_l2_trade_log(code, date, dir_)
|
|
|
if __name__ == '__main__':
|
# logger_l2_process_time.info("test123")
|
|
date = datetime.datetime.now().strftime("%Y-%m-%d")
|
LogUtil.extract_log_from_key("002846", "D:/logs/gp/l2/l2_process_time.{}.log".format(date),
|
"D:/logs/gp/l2/l2_process_time{}.{}.log".format("002846", date))
|