博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python logging模块
阅读量:6238 次
发布时间:2019-06-22

本文共 2744 字,大约阅读时间需要 9 分钟。

  hot3.png

    logging模块与log4j的机制是一样的,只是具体的实现细节不同。模块提供logger,handler,filter,formatter四个主要组件。

      logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过 logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用 getLogger方法返回同一个logger对象。

      handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0 到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。

      filter:提供一种优雅的方式决定一个日志记录是否发送到handler。

      formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。

   在记录日志时, 日志消息都会关联一个级别,系统默认提供了6个级别,它们分别是:CRITICAL、ERROR、WARNING、INFO、DEBU、NOTSET。他们的大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET。所以可以给日志对象设置日志级别,低于该级别的日志消息将会被忽略,也可以给Hanlder设置日志级别,对于低于该级别的日志消息, Handler也会忽略。

logging.getLogger([name])

    创建Logger对象,如果没有指定name,返回root logger。只要name相同,返回的logger实例都是同一个而且只有一个,即name和logger实例是一一对应的。日志记录的工作主要由Logger对象来完成。在调用getLogger时要提供Logger的名称(注:多次使用相同名称来调用getLogger,返回的是同一个对象的引用。),Logger实例之间有层次关系,这些关系通过Logger名称来体现。

Logger对像有如下常用的方法和属性:

Logger.setLevel(lvl):设置日志的级别。对于低于该级别的日志消息将被忽略。

Logger.debug(msg [ ,*args [, **kwargs]]):设置日志消息
Logger.info(msg[ , *args[ , **kwargs] ] )
Logger.warnning(msg[ , *args[ , **kwargs] ] )
Logger.error(msg[ , *args[ , **kwargs] ] )
Logger.critical(msg[ , *args[ , **kwargs] ] )
logging.basicConfig([**kwargs])

    该函数对日志的输出格式及方式做相关配置,kwargs 支持如下几个关键字参数:

     filename:日志文件的保存路径。如果配置了些参数,将自动创建一个FileHandler作为Handler;
     filemode:日志文件的打开模式。 默认值为'a',表示日志消息以追加的形式添加到日志文件中。如果设为'w', 那么每次程序启动的时候都会创建一个新的日志文件;
     format:设置日志输出格式;
     datefmt:定义日期格式;
     level:设置日志的级别.对低于该级别的日志消息将被忽略;
     stream:设置特定的流用于初始化StreamHandler;

logging.basicConfig(level=logging.WARN,				format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',				datefmt='%a, %d %b %Y %H:%M:%S',				filename='myapp.log',				filemode='w')logging.debug('debug')  #被忽略  logging.info('info')    #被忽略  logging.warning('warn')  #被记录logging.error('error')   #被记录
logging.getLevelName(lvl)

   通过数字获取日志级别对应的名称

logging.shutdown()

   当不再使用日志系统的时候,调用该方法,它会将日志flush到对应的目标域上。一般在系统退出的时候调用。

Logger.addHandler(hdlr)

   logger可以雇佣handler来帮它处理日志, handler主要有以下几种:

      StreamHandler: 输出到控制台
      FileHandler:   输出到文件

   由于StreamHandler和FileHandler是常用的日志处理方式,所以直接包含在logging模块中,而其他方式则包含在logging.handlers模块中,

logging的几种handle方式如下:

logging.handlers.BaseRotatingHandler
logging.handlers.RotatingFileHandler
logging.handlers.TimedRotatingFileHandler
logging.handlers.SocketHandler: 远程输出日志到TCP/IP sockets
logging.handlers.DatagramHandler:  远程输出日志到UDP sockets
logging.handlers.SMTPHandler:  远程输出日志到邮件地址
logging.handlers.SysLogHandler: 日志输出到syslog
logging.handlers.NTEventLogHandler: 远程输出日志到Windows NT/2000/XP的事件日志
logging.handlers.MemoryHandler: 日志输出到内存中的制定buffer
logging.handlers.HTTPHandler: 通过"GET"或"POST"远程输出到HTTP服务器
参考:http://docs.python.org/2/library/logging.html

转载于:https://my.oschina.net/guol/blog/121876

你可能感兴趣的文章
sql中的游标(一)
查看>>
nginx启动、重启、关闭
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
浅谈Listview中Adpter的用法
查看>>
设计模式----代理模式
查看>>
基于Socket的文件传输(使用CSocket类)
查看>>
搭建邮件服务器准备工作
查看>>
介绍一款开源的类Excel电子表格软件
查看>>
linux磁盘及文件系统管理进阶
查看>>
如何编写更好的SQL查询:终极指南-第三部分
查看>>
Apache
查看>>
集群(3)
查看>>
网上商城bug总结
查看>>
小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。(PHP版本)
查看>>
LAMP
查看>>
金恒威10口M12车载工业交换机
查看>>
OSPF
查看>>
selenium登陆QQ邮箱出现appid is invalid
查看>>
重放***之无线门铃
查看>>
url地址栏编码
查看>>