3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽平台中,若希望只显示错误日志或关闭下单成功的提示(通常属于 info 级别),可以使用 log.set_level 函数来调整日志的输出级别。
该函数通常在 initialize 初始化函数中调用。
要关闭下单成功的提示并只显示错误日志,请在策略代码中添加以下设置:
def initialize(context):
# 设置 'order' 类别的日志级别为 'error'
# 这意味着 'debug', 'info', 'warning' 级别的日志(包括下单成功提示)将被过滤
# 只有下单失败等 'error' 级别的日志会被打印
log.set_level('order', 'error')
# 如果也想过滤系统日志,可以设置 system
# log.set_level('system', 'error')
log.set_level(name, level) 用于设置不同种类日志的输出级别,低于设定级别的日志将不会被打印。
name (日志种类):
'order': 对应调用 order 系列 API(如 order, order_target 等)产生的日志。下单成功通常是 info 级别,下单失败通常是 error 级别。'system': 系统运行相关的日志。'history': 调用历史数据 API 产生的日志。'strategy': 用户在策略中使用 log.info() 等手动打印的日志。level (日志级别):
'debug' < 'info' < 'warning' < 'error'。log.set_level('order', 'error')
log.set_level('order', 'debug')
debug 或 info(视具体环境而定),建议在排查问题时注释掉 log.set_level 语句。Q: log.set_level 必须放在 initialize 中吗?
A: 建议放在 initialize 中,这样策略一开始运行就会生效。如果在 handle_data 中调用,虽然也能生效,但会重复执行,没有必要。在模拟交易中,如果修改了代码,可以在 after_code_changed 中重新设置。
Q: 我设置了 log.set_level('order', 'error'),为什么还是看不到下单失败的报错?
A: 请确认是否真的发生了下单失败。如果策略逻辑没有触发下单,或者触发了但被风控拦截(有时风控拦截属于 warning 级别),可能需要将级别调整为 warning 尝试。此外,请检查是否在策略其他地方(如 handle_data)又重新设置了日志级别覆盖了初始设置。
Q: 如何过滤掉我自己写的 log.info 打印的内容?
A: 您可以使用 log.set_level('strategy', 'error')。这样,您代码中所有的 log.info() 和 log.warn() 都不会显示,只有 log.error() 会被打印出来。