vnpy源码学习记录(2) ----------三个内置引擎

本文档介绍了vnpy框架中的三个内置引擎:LogEngine负责日志管理,OmsEngine作为指令管理系统,EmailEngine则实现了邮件发送功能。LogEngine通过logging模块提供日志输出,OmsEngine用于订单管理,EmailEngine基于smtplib模块封装邮件发送。文章详细讲解了各引擎的工作原理和配置方法,并提供了测试示例。
摘要由CSDN通过智能技术生成

BaseEngine

引擎的基础类,实现功能引擎的抽象类。初始化:初始化主引擎,事件引擎和引擎名。
下面三个内置功能引擎都继承该类

1. LogEngine 日志引擎

处理日志事件和日志输出
日志引擎主要是对python logging模块的进一步义封装。这里对其基于vnpy做简单说明。实例化日志引擎时,加载了logging模块的基本配置:

def __init__(self, main_engine: MainEngine, event_engine: EventEngine):
    super(LogEngine, self).__init__(main_engine, event_engine, "log")
    if not SETTINGS["log.active"]:  # 是否启动日志
        return
    self.level = SETTINGS["log.level"]  # 日志记录级别  默认为最高50 因此默认情况下不会输出任何信息
    self.logger = logging.getLogger("VN Trader")  # 使用工厂方法返回一个Logger实例。
    self.logger.setLevel(self.level)  # 设置日志级别
    self.formatter = logging.Formatter("%(asctime)s  %(levelname)s: %(message)s")  # 日志记录样式
    self.add_null_handler()  #
    if SETTINGS["log.console"]:
        self.add_console_handler()  # 添加控制台输出
    if SETTINGS["log.file"]:
        self.add_file_handler()  # 添加文件输出
	self.register_event()  # 注册事件

关于本地的配置SETTINGS可以在vnpy/trader/setting.py中找到(我自己开发时将不同功能的配置信息分割到不同文件,比如日志的配置写在一个文件,邮件的写在另一个文件),可以看到,vnpy将日志级别设置到最高,在loggging模块中定义,仅仅在该等级以上(或相等)才会反馈信息。因此默认情况下只有出现严重错误时才会出现反馈,否则不会产生任何日志信息,这里为了测试需要将日志级别该低一些(我调到了20,也就是DEBUG级别)。
日志级别及数值以及使用场景见下表:

类型 数值 描述
CRITICAL 50 严重错误,表明软件已不能继续运行了。
ERROR 40 由于更严重的问题,软件已不能执行一些功能了。
WARNING 30 某些没有预料到的事件的提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足。但是软件还是会照常运行。
INFO 20 证明事情按预期工作。
DEBUG 10 详细信息,一般只在调试问题时使用。
NOTSET 0

接着,程序使用add_null_handleradd_console_handleradd_file_handler添加三个处理器,分别对日志的处理方式进行定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值