logging模块1

logging模块 --logging模块提供通用的日志系统

Logging模块提供Logger,handler,filter,formatter

  1. Logger:记录器
    • 应用程序代码能直接调用日志接口。
    • Logger最常用的操作有两类:配置和发送日志消息。
    • 初始化 logger = logging.getLogger("endlesscode"),获取logger对象,getLogger()方法后面最好加上所要日志记录的模块名字,配置文件和打印日志格式中的%(name)s 对应的是这里的模块名字,如果不指定name则返回root对象。
    • logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志
    • 级别 何时使用
      DEBUG 详细信息,典型地调试问题时会感兴趣
      INFO 证明事情按预期工作
      WARNING 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作
      ERROR 由于更严重的问题,软件已不能执行一些功能了
      CRITICAL 严重错误,表明软件已不能继续运行了
    • 多次使用相同的name调用getLogger方法返回同一个looger对象;
  2. handler:处理器
    • 将(记录器产生的)日志记录(log record)发送至合适的目的地(destination),比如文件,socket等。
    • Handler常用的是StreamHandler和FileHandler,可以简单理解为一个是console和文件日志,一个打印在调试窗口上,一个记录在一个文件上
    • 一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。
  3. filter:过滤器
    • 提供更好的粒度控制,它可以决定输出哪些日志记录
  4. formatter:格式化器
    • 指明最终输出中日志记录的布局。
    • 指定日志记录输出的具体格式。
    • formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。
    • 喜欢用这样的格式 '[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S'

Logger 记录器
Logger是一个树形层级结构,在使用接口debug,info,warn,error,critical之前必须创建Logger实例

创建方法: logger = logging.getLogger(logger_name)

Handler 处理器
Handler处理器类型有很多种,比较常用的有三个,StreamHandler,FileHandler,NullHandler,详情可以访问Python logging.handlers
创建StreamHandler之后,可以通过使用以下方法设置日志级别,设置格式化器Formatter,增加或删除过滤器Filter。

创建方法: sh = logging.StreamHandler(stream=None)

FileHandler

创建方法: fh = logging.FileHandler(filename, mode='a', encoding=None, delay=False)

Formatter 格式化器
使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S。

创建方法: formatter = logging.Formatter(fmt=None, datefmt=None)

其中,fmt是消息的格式化字符串,datefmt是日期字符串。如果不指明fmt,将使用'%(message)s'。如果不指明datefmt,将使用ISO8601日期格式。
有用的format格式

格式 描述
%(levelno)s 打印日志级别的数值
%(levelname)s 打印日志级别名称
%(pathname)s 打印当前执行程序的路径
%(filename)s 打印当前执行程序名称
%(funcName)s 打印日志的当前函数
%(lineno)d 打印日志的当前行号
%(asctime)s 打印日志的时间
%(thread)d 打印线程id
%(threadName)s 打印线程名称
%(process)d 打印进程ID
%(message)s 打印日志信息
Filter 过滤器
Handlers和Loggers可以使用Filters来完成比级别更复杂的过滤。Filter基类只允许特定Logger层次以下的事件。例如用‘A.B’初始化的Filter允许Logger ‘A.B’, ‘A.B.C’, ‘A.B.C.D’, ‘A.B.D’等记录的事件,logger‘A.BB’, ‘B.A.B’ 等就不行。 如果用空字符串来初始化,所有的事件都接受。
创建方法: filter = logging.Filter(name='')

[参考](https://www.cnblogs.com/ranxf/p/7794240.html)

posted @ 2020-05-25 23:05  静心&得意  阅读(160)  评论(0编辑  收藏  举报