Python logging模块

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

      logger:提供日志接口,供应用代码使用。logger最长用的操做有两类:配置和发送日志消息。能够经过 logging.getLogger(name)获取logger对象,若是不指定name则返回root对象,屡次使用相同的name调用 getLogger方法返回同一个logger对象。 python

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

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

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

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

logging.getLogger([name]) 函数

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

Logger对像有以下经常使用的方法和属性: debug

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

相关文章
相关标签/搜索