python之logging模块

log的作用

-debuy调试:程序开发阶段对每一个可能产生的结果进行记录。
-定位:日志具备等级属性,将提示/异常分等级记录,可准确定位程序运行状态
-与IO操作相比,更节省系统资源

log级别

级别何时使用
DEBUG细节信息,仅在提示诊断使用
INFO确认程序按照预期进行
WARNING警告信息,表明已经有或即将有错误发生(内存即将不足),程序仍在运行
ERROR严重错误,程序某些功能已经停止
CRITICAL严重错误,程序已经停止

在python的logging模块中,默认的级别是warning,日志只记录等于或高于初始化等级的信息

import logging
logging.DEBUY('DEBUY message')
logging.WARNING('WARNING message')

运行结果

WARNING:root:WARNING message

上述示例中有几个问题:

  1. 日志信息直接在窗口打印
  2. 没有生成(.log)文件
  3. DEBUG信息并没有打印
  4. 打印的格式是什么意思,如何添加其他信息,如时间

logging模块初始化

在使用日志功能前,一般需要进行初始化操作,如日志文件名、记录输出格式、日志等级等

初始化函数与参数

logging.basicConfig(**kwargs)

参数名作用
filename指定日志文件名
filemode创建日志方式,’a’追加,‘w’覆盖
format输出格式
datefmt输出格式带有时间时,可规定时间格式
style指定字符串格式,默认’%(dictionary key)s’
level日志初始等级
handlers记录处理程序,如将log信息发送到指定的位置

style的说明,style可指定三种字符串格式,style 是 ‘%’,’{ ’ 或’ $ ’ 之一。如果未指定其中一个,则将使用’%’。如果 style 是’%’,则消息格式字符串使用 ‘%()s’ 样式字符串替换;可能的键值在 logrecord-attributes 中。如果样式为’{’,则假定消息格式字符串与 str.format()(使用关键字参数)兼容, 而如果样式为’ $ ’ ,则消息格式字符串应符合string.Template.substitute()。

import logging
logging.basicConfig(format='%(asctime)s %(filename)s:%(levelname)s:%(message)s',datefmt='%y/%m/%d %I:%M:%S',filename='mylog.log',filemode='a',level=logging.DEBUG)
logging.debug("hello")   

上述示例的含义是,创建了一个路径在当前运行程序下名为"mylog.log"的日志文件,通过追加方式写入,记录等级为DEBUG,显示格式为"19/05/28 11:21:49 log_May28.py:DEBUG:hello"
注意:程序中的时间格式’%S’必须为大写格式,小写格式报错

关于handlers

从官方文档得知,日志库采用模块化方法,提供了几种组件:记录器、处理程序、过滤器以及格式化程序。

  • 记录器公开应用程序代码直接使用的接口
  • 处理程序将日志内容(有记录器创建)发送到适当的目标
  • 过滤器提供更精细的设施,用于确定输出的日志记录
  • Formatters指定最终输出中日志记录的布局
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值