使用合理的默认值进行Python日志记录
lg的Python项目详细描述
安装
pip install -U lg
为什么
问:为什么不在stdlib中使用Python的日志模块?在
答:当然可以,但是Python stdlib日志记录往往会让新手感到困惑,而且它有转角大小写的默认行为。在
在这个模块中,我尝试使用有用的默认值使日志易于配置 行为:
- 默认情况下旋转和压缩日志(使用gzip压缩)。也支持zip
- 日志行和时间格式的有用默认值(可以手动格式化)
- 聚合内存缓冲区中的日志行,以最小化磁盘写入操作
- 编写json日志而不占用大量的CPU开销
多日志文件警告
如果要在脚本的不同部分记录到不同的文件,则需要使用唯一的log_ref
值配置不同的日志对象。在
简单用法:编写json日志
本例使用压缩备份将python字典写入json日志。在
fromlgimportLogmylog=Log(log_ref="json_log01",log_path="mylog.log",line_fmt="auto_json",# json-compatible logs, use "auto_string" for text# json logs have an embedded timestamp on # each logline.when="midnight",# "D": days, "H": hours, "S": seconds, or "midnight"interval=1,# Rotate every night at midnightbackup_count=10,# Number of logfiles to keeplog_buffer=10*1024,# 10KB memory bufferlog_stdout=True# Also write to stdout)ii=0whileTrue:mylog.log({"this":"hello","index":ii},loglevel="debug",)ii+=1ifii>100000:breakmylog.close()# Close all logging handlers
关于json日志的说明。由于我用json日志格式进行了优化, 请注意,当您将json日志读为json时,必须对它们进行一些重新格式化。“auto_json”选项以json日志格式记录各个行。但是,在添加opening之前,日志文件本身将不兼容json 在日志文件的内容后面加上右括号 看起来像一个json列表)。在
此示例在上写入未加日期戳的原始字符串日志消息 每行。。。在
^{pr2}$- 项目
标签: