vn.py的日志问题

使用新版 vn.py 调试时, 发现没有日志, 然后写了下面一段代码跟踪:

from vnpy.trader.setting import SETTINGS
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.engine import LogEngine
from vnpy.trader.logger import INFO
from vnpy_ctastrategy.base import EVENT_CTA_LOG
from vnpy.trader.event import EVENT_LOG

SETTINGS["log.active"] = True  
SETTINGS["log.level"] = INFO
SETTINGS["log.console"] = True 
SETTINGS["log.file"] = True    

event_engine = EventEngine()
main_engine = MainEngine(event_engine)

try:
    log_engine = main_engine.get_engine("log")
    
    event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event)
    event_engine.register(EVENT_LOG, log_engine.process_log_event)

    main_engine.write_log("这是一个测试日志")

    import time
    time.sleep(1)

except Exception as e:
    print(f"有错误: {e}")

finally:    
    event_engine.stop()
    main_engine.close()

  在项目 .vntrader下,有了log目录,但是日志文件里什么都没有。 

       最后发现: 代码里 SETTINGS 设置实际上并没有发挥作用,可以删除。 实际起作用的是 .vntrader下的vt_setting.json 文件,将log.level级别修改为 20 (INFO)级别就好了。 修改后的代码可以是:

from vnpy.trader.setting import SETTINGS
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.engine import LogEngine
from vnpy.trader.logger import INFO
from vnpy.trader.event import EVENT_LOG

event_engine = EventEngine()
main_engine = MainEngine(event_engine)

try:
    log_engine = main_engine.get_engine("log")
        
    event_engine.register(EVENT_LOG, log_engine.process_log_event)

    main_engine.write_log("这是一个测试日志3")

    import time
    time.sleep(1)

except Exception as e:
    print(f"有错误: {e}")

finally:    
    event_engine.stop()
    main_engine.close()

  

posted on 2025-10-29 17:26  金凯旋  阅读(3)  评论(0)    收藏  举报

导航