""" 日志 """ import logging import os import sys from loguru import logger import constant 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", enqueue=True) logger.add(self.get_path("trade", "delegate"), filter=lambda record: record["extra"].get("name") == "delegate", rotation="00:00", compression="zip", enqueue=True) 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(self.get_path("l2", "l2_data"), filter=lambda record: record["extra"].get("name") == "l2_data", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "l2_latest_data"), filter=lambda record: record["extra"].get("name") == "l2_latest_data", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("mysql", "mysql_debug"), filter=lambda record: record["extra"].get("name") == "mysql_debug", rotation="00:00", compression="zip", enqueue=True) # 显示在控制台 logger.add(sys.stdout, filter=lambda record: record["extra"].get("name") == "info", enqueue=True) 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", "cancel/s_cancel"), filter=lambda record: record["extra"].get("name") == "s_cancel", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "cancel/h_cancel"), filter=lambda record: record["extra"].get("name") == "h_cancel", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "cancel/l_cancel"), filter=lambda record: record["extra"].get("name") == "l_cancel", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "cancel/g_cancel"), filter=lambda record: record["extra"].get("name") == "g_cancel", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "cancel/d_cancel"), filter=lambda record: record["extra"].get("name") == "d_cancel", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "cancel/f_cancel"), filter=lambda record: record["extra"].get("name") == "f_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("l2", "l2_trade_queue"), filter=lambda record: record["extra"].get("name") == "l2_trade_queue", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "l2_trade_buy_queue"), filter=lambda record: record["extra"].get("name") == "l2_trade_buy_queue", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "l2_trade_buy_progress"), filter=lambda record: record["extra"].get("name") == "l2_trade_buy_progress", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "l2_real_place_order_position"), filter=lambda record: record["extra"].get("name") == "l2_real_place_order_position", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "l2_subscript"), filter=lambda record: record["extra"].get("name") == "l2_codes_subscript", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "l2_market_sell"), filter=lambda record: record["extra"].get("name") == "l2_market_sell", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("l2", "l2_not_buy_reasons"), filter=lambda record: record["extra"].get("name") == "l2_not_buy_reasons", 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("juejin", "juejin_trade"), filter=lambda record: record["extra"].get("name") == "juejin_trade", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("juejin", "huaxin_trade"), filter=lambda record: record["extra"].get("name") == "huaxin_trade", 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") == "print", enqueue=True) 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) logger.add(self.get_path("ths", "buy_1_volumn"), filter=lambda record: record["extra"].get("name") == "buy_1_volumn", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("ths", "buy_1_volumn_record"), filter=lambda record: record["extra"].get("name") == "buy_1_volumn_record", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("ths", "trade_queue_price_info"), filter=lambda record: record["extra"].get("name") == "trade_queue_price_info", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("ths", "day_volumn"), filter=lambda record: record["extra"].get("name") == "day_volumn", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("ths", "buy_win_distibute"), filter=lambda record: record["extra"].get("name") == "buy_win_distibute", rotation="00:00", compression="zip", 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("debug", "request_api"), filter=lambda record: record["extra"].get("name") == "request_api", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("trade", "trade_record"), filter=lambda record: record["extra"].get("name") == "trade_record", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("trade", "position_api_request"), filter=lambda record: record["extra"].get("name") == "position_api_request", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("score", "place_order_score"), filter=lambda record: record["extra"].get("name") == "place_order_score", 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("kpl", "kpl_block_can_buy"), filter=lambda record: record["extra"].get("name") == "kpl_block_can_buy", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_path("kpl", "kpl_open_limit_up"), filter=lambda record: record["extra"].get("name") == "kpl_open_limit_up", 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_hx_path("l2", "transaction"), filter=lambda record: record["extra"].get("name") == "hx_l2_transaction", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "transaction_sell_order"), filter=lambda record: record["extra"].get("name") == "hx_l2_transaction_sell_order", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "transaction_desc"), filter=lambda record: record["extra"].get("name") == "hx_l2_transaction_desc", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "orderdetail"), filter=lambda record: record["extra"].get("name") == "hx_l2_orderdetail", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "marketdata"), filter=lambda record: record["extra"].get("name") == "hx_l2_market_data", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "upload"), filter=lambda record: record["extra"].get("name") == "hx_l2_upload", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "debug"), filter=lambda record: record["extra"].get("name") == "hx_l2_debug", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "transaction_big_buy_order"), filter=lambda record: record["extra"].get("name") == "hx_l2_transaction_big_buy_order", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("l2", "transaction_big_sell_order"), filter=lambda record: record["extra"].get("name") == "hx_l2_transaction_big_sell_order", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("contact", "debug"), filter=lambda record: record["extra"].get("name") == "hx_contact_debug", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("trade", "trade_callback"), filter=lambda record: record["extra"].get("name") == "hx_trade_callback", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("trade", "debug"), filter=lambda record: record["extra"].get("name") == "hx_trade_debug", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_hx_path("trade", "trade_loop"), filter=lambda record: record["extra"].get("name") == "hx_trade_loop", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "transaction"), filter=lambda record: record["extra"].get("name") == "local_huaxin_transaction", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "orderdetail"), filter=lambda record: record["extra"].get("name") == "local_huaxin_orderdetail", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "upload"), filter=lambda record: record["extra"].get("name") == "local_huaxin_upload", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "error"), filter=lambda record: record["extra"].get("name") == "local_huaxin_error", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "subscript"), filter=lambda record: record["extra"].get("name") == "local_huaxin_subscript", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "market"), filter=lambda record: record["extra"].get("name") == "local_huaxin_l2_market", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("contact", "debug"), filter=lambda record: record["extra"].get("name") == "local_huaxin_debug", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("trade", "trade_debug"), filter=lambda record: record["extra"].get("name") == "local_huaxin_trade_debug", rotation="00:00", compression="zip", enqueue=True) logger.add(sys.stdout, filter=lambda record: record["extra"].get("name") == "local_huaxin_l1_show_info") logger.add(self.get_local_huaxin_path("l1", "show_info"), filter=lambda record: record["extra"].get("name") == "local_huaxin_l1_show_info", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l1", "l1_for_trade"), filter=lambda record: record["extra"].get("name") == "local_huaxin_l1_trade_info", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "g_cancel"), filter=lambda record: record["extra"].get("name") == "local_huaxin_g_cancel", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "special_volume"), filter=lambda record: record["extra"].get("name") == "local_huaxin_l2_special_volume", rotation="00:00", compression="zip", enqueue=True) logger.add(self.get_local_huaxin_path("l2", "l2_buy_no"), filter=lambda record: record["extra"].get("name") == "local_huaxin_l2_buy_no", rotation="00:00", compression="zip", enqueue=True) def get_path(self, dir_name, log_name): path_str = "{}/{}/gp/{}/{}".format(constant.get_path_prefix(), constant.LOG_DIR, dir_name, log_name) + ".{time:YYYY-MM-DD}.log" # print(path_str) return path_str def get_hx_path(self, dir_name, log_name): path_str = "{}/{}/huaxin/{}/{}".format(constant.get_path_prefix(), constant.LOG_DIR, dir_name, log_name) + ".{time:YYYY-MM-DD}.log" # print(path_str) return path_str def get_local_huaxin_path(self, dir_name, log_name): path_str = "{}/{}/huaxin_local/{}/{}".format(constant.get_path_prefix(), constant.LOG_DIR, 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_print = __mylogger.get_logger("print") logger_info = __mylogger.get_logger("info") 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_data = __mylogger.get_logger("l2_data") logger_l2_latest_data = __mylogger.get_logger("l2_latest_data") logger_l2_market_sell = __mylogger.get_logger("l2_market_sell") logger_l2_not_buy_reasons = __mylogger.get_logger("l2_not_buy_reasons") logger_l2_trade = __mylogger.get_logger("l2_trade") logger_l2_trade_cancel = __mylogger.get_logger("l2_trade_cancel") logger_l2_s_cancel = __mylogger.get_logger("s_cancel") logger_l2_h_cancel = __mylogger.get_logger("h_cancel") logger_l2_d_cancel = __mylogger.get_logger("d_cancel") logger_l2_f_cancel = __mylogger.get_logger("f_cancel") logger_l2_l_cancel = __mylogger.get_logger("l_cancel") logger_l2_g_cancel = __mylogger.get_logger("g_cancel") logger_l2_trade_buy = __mylogger.get_logger("l2_trade_buy") logger_l2_trade_queue = __mylogger.get_logger("l2_trade_queue") logger_l2_trade_buy_queue = __mylogger.get_logger("l2_trade_buy_queue") logger_l2_trade_buy_progress = __mylogger.get_logger("l2_trade_buy_progress") logger_real_place_order_position = __mylogger.get_logger("l2_real_place_order_position") # 代码订阅日志 logger_l2_codes_subscript = __mylogger.get_logger("l2_codes_subscript") logger_l2_big_data = __mylogger.get_logger("l2_big_data") logger_juejin_tick = __mylogger.get_logger("juejin_tick") logger_juejin_trade = __mylogger.get_logger("juejin_trade") logger_huaxin_trade = __mylogger.get_logger("huaxin_trade") logger_code_operate = __mylogger.get_logger("code_operate") logger_device = __mylogger.get_logger("device") logger_system = __mylogger.get_logger("system") logger_buy_1_volumn = __mylogger.get_logger("buy_1_volumn") logger_buy_1_volumn_record = __mylogger.get_logger("buy_1_volumn_record") logger_trade_queue_price_info = __mylogger.get_logger("trade_queue_price_info") logger_day_volumn = __mylogger.get_logger("day_volumn") logger_buy_win_distibute = __mylogger.get_logger("buy_win_distibute") logger_first_code_record = __mylogger.get_logger("first_code_record") logger_debug = __mylogger.get_logger("debug") logger_request_api = __mylogger.get_logger("request_api") logger_trade_record = __mylogger.get_logger("trade_record") logger_trade_position_api_request = __mylogger.get_logger("position_api_request") logger_place_order_score = __mylogger.get_logger("place_order_score") 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_kpl_block_can_buy = __mylogger.get_logger("kpl_block_can_buy") logger_kpl_open_limit_up = __mylogger.get_logger("kpl_open_limit_up") logger_kp_msg = __mylogger.get_logger("kp_msg") logger_redis_debug = __mylogger.get_logger("redis_debug") logger_profile = __mylogger.get_logger("profile") logger_mysql_debug = __mylogger.get_logger("mysql_debug") # -------------------------------华鑫日志--------------------------------- hx_logger_l2_orderdetail = __mylogger.get_logger("hx_l2_orderdetail") hx_logger_l2_transaction = __mylogger.get_logger("hx_l2_transaction") hx_logger_l2_transaction_sell_order = __mylogger.get_logger("hx_l2_transaction_sell_order") hx_logger_l2_transaction_desc = __mylogger.get_logger("hx_l2_transaction_desc") hx_logger_l2_market_data = __mylogger.get_logger("hx_l2_market_data") hx_logger_l2_upload = __mylogger.get_logger("hx_l2_upload") hx_logger_l2_debug = __mylogger.get_logger("hx_l2_debug") hx_logger_contact_debug = __mylogger.get_logger("hx_contact_debug") hx_logger_trade_callback = __mylogger.get_logger("hx_trade_callback") hx_logger_trade_debug = __mylogger.get_logger("hx_trade_debug") hx_logger_trade_loop = __mylogger.get_logger("hx_trade_loop") hx_logger_l2_transaction_big_buy_order = __mylogger.get_logger("hx_l2_transaction_big_buy_order") hx_logger_l2_transaction_big_sell_order = __mylogger.get_logger("hx_l2_transaction_big_sell_order") # -------------------------------华鑫本地日志--------------------------------- logger_local_huaxin_l2_transaction = __mylogger.get_logger("local_huaxin_transaction") logger_local_huaxin_l2_orderdetail = __mylogger.get_logger("local_huaxin_orderdetail") logger_local_huaxin_l2_upload = __mylogger.get_logger("local_huaxin_upload") logger_local_huaxin_l2_error = __mylogger.get_logger("local_huaxin_error") logger_local_huaxin_l2_subscript = __mylogger.get_logger("local_huaxin_subscript") logger_local_huaxin_l2_market = __mylogger.get_logger("local_huaxin_l2_market") logger_local_huaxin_contact_debug = __mylogger.get_logger("local_huaxin_debug") logger_local_huaxin_trade_debug = __mylogger.get_logger("local_huaxin_trade_debug") logger_local_huaxin_l1 = __mylogger.get_logger("local_huaxin_l1_show_info") logger_local_huaxin_g_cancel = __mylogger.get_logger("local_huaxin_g_cancel") logger_local_huaxin_l2_buy_no = __mylogger.get_logger("local_huaxin_l2_buy_no") logger_local_huaxin_l1_trade_info = __mylogger.get_logger("local_huaxin_l1_trade_info") logger_local_huaxin_l2_special_volume = __mylogger.get_logger("local_huaxin_l2_special_volume") def close_print(): logging.basicConfig(level=logging.ERROR) if not constant.is_windows(): os.close(1) os.open('/dev/null', os.O_WRONLY) def printlog(*args): logger_print.info(args) if __name__ == "__main__": open_limit_up_codes = set({"000333", "000222"}) logger_kpl_open_limit_up.info(f"炸板代码:{open_limit_up_codes}")