5.62K 浏览
0

看了下TqApi的代码,是否可以考虑再其他地方有个总的log控制的方式,而不是每次创建实例的时候都会重新把log设成DEBUG级别

# 初始化 logger

self._logger = logging.getLogger("TqApi")
self._logger.setLevel(logging.DEBUG)
if not self._logger.handlers:
    sh = logging.StreamHandler()
    sh.setLevel(logging.INFO)
    if backtest:  # 如果回测, 则去除将第一个本地时间
        log_format = logging.Formatter('%(levelname)s - %(message)s')
    else:
        log_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
    sh.setFormatter(log_format)
    self._logger.addHandler(sh)
    if debug:
        fh = logging.FileHandler(filename=debug)
        fh.setFormatter(log_format)
        self._logger.addHandler(fh)
eeeeeson 已回答的问题 2019年12月27日
0

#将日志级别设成INFO

logging_level = logging.INFO
logging.getLogger(‘TqApi.TqBacktest’).setLevel(logging_level)
logging.getLogger(‘TqApi.TqSim’).setLevel(logging_level)

api = TqApi(TqSim(), backtest=backtest,debug=api_debug_file)

apilogger = logging.getLogger(‘TqApi’)
apilogger.setLevel(logging_level)

eeeeeson 已回答的问题 2019年12月27日
0

现在完全解决你的问题暂时还没有好的方案,如果把logger关掉是可以的。在策略代码中加入:

import logging

logging.getLogger(“TqApi.TqSim”).disabled = True

west 发表新评论 2019年11月25日

嗯嗯 是的 就是个建议 看看能否未来更新有加入

之后可能优化,但不是最近,优先级比较低

0

直接api._logger.setLevel()改不就行了

Aaron Yu 发表新评论 2019年11月21日

首先,以下划线开头的变量一般认为是类的内部成员,直接外部访问是不符合python的规范的,当然这么做是没问题
其次,即使这样做,在TqApi创建实例的过程中,仍然会有debug log的输出,你用实盘账号来创建实例试试看就知道了