python学习笔记——日志

日志相关概念

logging模块提供模块级别的函数记录日志

日志的级别(level):不同的用户关注不同的程序信息

  • DEBUG
  • INFO
  • NOTICE
  • WARING
  • ERROR
  • CRITICAL
  • ALERT
  • EMERGENCY

因为日志属于IO操作所以不要太频繁(速度太慢)

LOG的作用

  • 调试
  • 了解软件的运行情况
  • 分析定位问题

日志信息

  • time
  • 地点
  • level
  • 内容

成熟的第三方日志

  • log4j(Java)
  • log4php(php)
  • logging(python)

logging模块

日志级别

  • DEBUG
  • INFO
  • WARING
  • ERROR
  • CRITICAL

初始化/写日志实例需要指定级别,只有当级别等于或者高于指定级别才被记录

使用方式

直接使用logging(封装了其他组件)
logging四大组件直接定义

logging模块级别的日志

函数描述
logging.debug(msg, *args, **kwargs)创建一条严重级别为DEBUG的日志记录
logging.info(msg, *args, **kwargs)创建一条严重级别为INFO的日志记录
logging.warning(msg, *args, **kwargs)创建一条严重级别为WARNING的日志记录
logging.error(msg, *args, **kwargs)创建一条严重级别为ERROR的日志记录
logging.critical(msg, *args, **kwargs)创建一条严重级别为CRITICAL的日志记录
logging.log(level, *args, **kwargs)创建一条严重级别为level的日志记录
logging.basicConfig(**kwargs)对root logger进行一次性配置(只在第一次调用时起作用)

logging.basicConfig(**kwargs) 不配置logger则使用默认值 输出:sys.stderr(控制台)

级别:WARNING(以上包括WARNING) 格式:level:log_name:content

#配置格式例子
LOG_FORMAT = "%(asctime)s====%(levelname)s====%(message)s"
logging.basicConfig(fielname = "", level = , format = LOG_FORMAT)
常用format参数
参数描述
%(levelno)s打印日志级别的数值
%(levelname)s打印日志级别名称
%(pathname)s打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s打印当前执行程序名,python如:login.py
%(funcName)s打印日志的当前函数
%(lineno)d打印日志的当前行号,在第几行打印的日志
%(asctime)s打印日志的时间
%(thread)d打印线程ID
%(threadName)s打印线程名称
%(process)d打印进程ID
%(processName)d打印进程名称 python3.1新增
%(message)s打印日志信息
%(created)f日志发生的时间
%(msecs)d日志事件发生的毫秒部分
%(name)s所使用的日志器名称,默认是root,因为使用的是rootlogger
%(module)sfilename的部分名称不包括后缀
四大组件
  • 日志器(Logger):产生日志的一个借口
  • 处理器(Handler):把产生的日志发送到相应的目的地
  • 过滤器(Filter):更精细的控制哪些日志输出
  • 格式器(Formatter):对输出的信息进行格式化
Logger

产生日志操作

操作
Logger.setLevel()设置日志器将会处理的日志消息的最低严重级别
Logger.addHandlr() 和 Logger.removeHandler()为logger对象添加或移除一个处理器
Logger.addFilter() 和 Logger.removeFilter()为logger对象添加或移除一个过滤器
Logger.debug()产生一条debug级别的日志,同理 info , error…
Logger.exception()创建类似于Logger.error的日志消息
Logger.log()获取一个明确的日志level参数类创建一个日志记录

如何得到一个logger对象

实例化 logging.getLogger()

Handler

把log发送到指定位置
方法

  • setlevel
  • setFormat
  • addFilter, removeFilter
类名描述
StreamHandler实例发送错误到流(类似文件的对象)
FileHandler实例发送错误到磁盘文件
BaseRotatingHandler是所有轮徇日志的基类,不能直接使用,但是可以使用RotatingFileHandler和TimeRotatingFileHandler
RotatingFileHandler实例发送信息到磁盘文件,并且限制最大的日志文件大小,并适时轮徇
TimeRotatingFileHandler实例发送错误信息到磁盘,并在适当的事件间隔进行轮徇
SocketHandler实例发送日志到TCP/IP socket
DatagramHandler实例发送错误信息通过UDP协议
SMTPHandler实例发送错误信息到特定的email地址
SysLogHandler实例发送日志到UNIX syslog服务,并支持远程syslog服务
NTEventLogHandler实例发送日志到WindowsNT/2000/XP事件日志
MemoryHandler实例发送日志到内存中的缓冲区,并在达到特定条件时清空
HTTPHandler实例发送错误信息到HTTP服务器,通过GET或POST方法
Format类

直接实例化
可以继承Format添加特殊内容
三个参数

  • fmt
  • datefmt
  • style
Filter类

可以被Handler和Logger使用,控制传递过来信息的具体内容

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值