Python异步多任务交易框架实践-第二篇

论坛 期权论坛 期权     
期权匿名问答   2022-6-24 06:30   6698   0
前言:

上一节我们简单介绍了异步量化框架的简单内容,以及相关事件协程相关的知识概念。
详细可看这篇文章:
这一节我们会针对log模块做一个简单的封装和全局调用。
一、日志模块的重要性

其实很多人,特别是个人量化投资者不是太愿意或者是没有记录日志的习惯。因为框架都是自己从0开始弄得,哪里出现问题就就可以及时发现,所以针对日志记录其实大可不必。还有一些朋友喜欢用print来显示调试。但是这终归不是解决问题的具体方式,也可以说并不是一个非常理想的解决方案。
那么为什么需要记录日志呢?

其实不需要我多说,一百度有无数种理由告诉你需要记录日志。
我的观点主要有以下几点,结合自身十几年的开发经验来说:
记录日志是调试程序,监视程序运行的一种重要的方式,主要有两个目的:bug的及时发现和定位,显示程序运行状态。正确详细的日志记录能够快速的定位问题。同样,通过查看日志,可以看出程序正在做什么,是不是按预期的设计在执行,所以记录下程序的运行状态是必要的。
二、哪些地方需要针对性的日志记录呢?


  • 关于系统运行状态的日志记录
  • 系统中接口的监控记录
  • 行为记录:策略参数调整,重启,调试等的记录。
  • 策略状态的监控记录
  • 异常请求以及任务的监控记录
  • 数据处理相关记录
  • 等等
三、交易系统日志记录的方式:

针对日志记录我仅仅介绍我自己的记录方式:


整个日志的封装其实很简单,相关内容涵盖面也很广,涉及到了日志记录的方方面面以及可能会遇到的问题。
这个封装其实比较完善,丢进任何一套框架都可以独立运行,扩展性很好。用起来也很方便。
调用只需要全局配置logger_config方法即可实现全局调用,具体全局配置我们会在下面一篇文章详细介绍,欢迎关注更新。

这里我用到的日志模块是loguru,选择它是因为封装的更加完善,我仅仅需要少量的配置就可以完成很多的工作。
1、日志级别限定
测试阶段我会一直使用DEBUG模式,记录更多的日志信息,再配合日志分析工具来实现对问题的针对性分析。
2、日志记录思路
日志记录方式我的format是:
{level} - {time:YYYYMMDD HH:mm:ss} | {process.name} | {module} | {function} | {line} | {message}level——>日志等级
time:YYYYMMDD HH:mm:ss——>日志记录时间
process.name——>进程名字
module——>模块名称
function——>方法名称
line——>出现问题的行数
message——>具体记录消息
message消息的回调格式:
{function}—{account}—{message}function:可为策略、数据服务、账户服务等,一共分为七类
account:具体出问题的账户,可为None
message:具体错误问题信息
根据以上出现的问题,再配合日志分析工具,基本可以实现问题的快速定位,实现高效运维。
四、日志分割以及存储方式

我其实没有删除日志的习惯的,基本上所有的日志我都会定期分类保存。


文件夹内还有一些细分模块。
日志存储:

日志存储我分为两步走
1、存储在Mongodb数据库中
2、存储本地文件格式
这样做的原因是,经历过一次数据库被黑的情况,所以就做了个脚本定期下载数据库文件到本地服务器,等于是定期备份日志到本地。
日志分割模式:

日志分割我是按照天来计算的,每天都会重新生成一个新的日志,分割时间为晚上12点整。loguru在add方法可以通过添加retention和compression参数将日志自动分割并且自动打包封装成对应的格式。
这样就很方便我进行存储和维护。
五、后期总结维护以及日志的具体用途

这里只能结合我自己的用法和处理方式给到对应的建议和意见
日志对于我们团队来说算是一个成长和学习的过程。很多问题的总结都是通过日志分析来的。团队每周都会有周会,我们会拿出一周的日志并筛选出主要的核心问题来最针对性的解决和总结。
策略开发和系统开发过程中,我们总会遇到很多相似或者是相同的问题。这需要我们快速反应,结合经验来做针对性的解决。这就是日志给我们带来的便利之处。
团队中会有共享文档,每个团队成员也会有自己的知识库,我们会针对自己维护的项目做针对的经验总结,并且把遇到的问题和一些bug经验记录下来,这就形成了个人的经验和学习文档。
每周的周会我们会针对一周中遇到的比较严重的问题做针对性的讨论,也会让大家分享自己遇到的问题、策略新思路以及一些市场见解等并会把讨论内容记录在共享知识库中,这方便我们后期学习和提升。
总归这几年走来,我们确实发现,良好的日志记录和分析习惯,确实能够帮助我们在开发过程中更好的避开一些坑,也能够帮助我们快速成长。
其实也得益于我们也针对当前的大量日志做了一套良好的分析逻辑,总之,坑很多,都走过来了,剩下的就是收获。
关于日志分析工具这里也给大家推荐几个,可以在微信公众平台回复"log分析工具",即可获取详细的地址。我们的分析框架也是根据开源的修改而来,目前已经很完善了,有机会可以拿出来单独聊聊。
代码可以到这里去获取或者关注知识星球获取源码:
参考资料:
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP