Python(2.7.6) 标准日志模块 - Logging Handler

Python 标准日志模块使用 Handler 控制日志消息写到不同的目的地,如文件、流、邮件、socket 等。除了StreamHandler、 FileHandler 和 NullHandler 定义在 logging 模块中,其他的 Handler 均定义在  logging.hangdlers 模块中。这些 Handler 是:WatchedFileHandler、RotatingFileHandler、TimedRotatingFileHandler、SocketHandler、DatagramHandler、SysLogHandler、NTEventLogHandler、SMTPHandler、MemoryHandler、HTTPHandler。

RotatingFileHandler 能够管理日志文件的大小,当日志文件的大小达到阈值后,它会重命名日志文件,然后再创建一个新的同名日志文件继续输出。

import logging
import logging.handlers

handler = logging.handlers.RotatingFileHandler(
    filename    = ‘myapp.log‘,
    maxBytes    = 200,
    backupCount = 5,
)
handler.setFormatter(
    logging.Formatter(
        fmt     = ‘%(asctime)s [%(threadName)s] (%(filename)s:%(lineno)d) %(levelname)s - %(message)s‘,
        datefmt = ‘%Y-%m-%d %H:%M:%S‘
    )
)

root = logging.getLogger()
root.setLevel(logging.DEBUG)
root.addHandler(handler)

for i in range(20):
    root.debug(‘The Message(%d/20).‘ %  (i + 1))

参数 maxBytes 设定了日志文件大小的阈值,参数 backupCount 设定了备份文件的个数。当日志文件即 myapp.log 的大小达到阈值200字节的时候,RotatingFileHandler 会将 myapp.log 重命名为 myapp.log.1,然后再创建一个新的同名日志文件 myapp.log。当 myapp.log 的大小又达到200字节时,RotatingFileHandler 将会把 myapp.log.1 重命名为 myapp.log.2,再把 myapp.log 重命名为 myapp.log.1,然后再创建一个新的同名日志文件 myapp.log。这样反复直到创建了5个备份文件后,当 myapp.log 的大小再次达到200字节时,RotatingFileHandler 不会将 myapp.log.5 重命名为 myapp.log.6 而是将其删除。

TimedRotatingFileHandler 和 RotatingFileHandler 类似,不过,TimedRotatingFileHandler 没有通过判断文件大小来决定何时重新创建日志文件,而是间隔一定时间就自动创建新的日志文件。重命名的过程中,备份日志文件的后缀不是数字,而是当前时间。

import logging
import logging.handlers
import time

handler = logging.handlers.TimedRotatingFileHandler(
    filename    = ‘myapp.log‘,
    when        = ‘M‘,
    interval    = 2,
    backupCount = 3,
)
handler.setFormatter(
    logging.Formatter(
        fmt     = ‘%(asctime)s [%(threadName)s] (%(filename)s:%(lineno)d) %(levelname)s - %(message)s‘,
        datefmt = ‘%Y-%m-%d %H:%M:%S‘
    )
)

root = logging.getLogger()
root.setLevel(logging.DEBUG)
root.addHandler(handler)

for i in range(20):
    root.debug(‘The Message(%d/20).‘ %  (i + 1))
    time.sleep(30)

参数 interval 设定了时间间隔,参数 when 设定了间隔的单位。when 的取值可以是 ‘S‘(秒)、 ‘M‘(分)、 ‘H‘(小时)、 ‘D‘(天)、 ‘W0‘ - ‘W6‘(周一至周六)、 ‘midnight‘(凌晨),当 when 的取值是 ‘W0‘ - ‘W6‘ 或 ‘midnight‘ 时,参数 interval 的取值是被忽略的。

SMTPHandler 能够通过 SMTP 将日志消息发送到邮件服务器中。

import logging
import logging.handlers

handler = logging.handlers.SMTPHandler(
    mailhost    = (‘smtp.163.com‘, 25),
    fromaddr    = ‘[email protected]‘,
    toaddrs     = ‘[email protected]‘,
    subject     = ‘SMTPHandler Demo‘,
    credentials = (‘[email protected]‘, ‘123456‘)
)
handler.setLevel(logging.CRITICAL)
handler.setFormatter(
    logging.Formatter(
        fmt     = ‘%(asctime)s [%(threadName)s] (%(filename)s:%(lineno)d) %(levelname)s - %(message)s‘,
        datefmt = ‘%Y-%m-%d %H:%M:%S‘
    )
)

root = logging.getLogger()
root.addHandler(handler)
root.critical(‘This is a critical message‘);

其他 Handler 的用法示例待补充。

时间: 2024-10-12 04:14:39

Python(2.7.6) 标准日志模块 - Logging Handler的相关文章

Python(2.7.6) 标准日志模块 - Logging Configuration

除了使用 logging 模块中的 basicConfig 方法配置日志, Python 的 logging.config 模块中, dictConfig 和 fileConfig 方法分别支持通过字典和文件的方式配置 Logger.Handler 和 Formatter.下面用一个例子来简单地说明如何使用文件配置日志,更多详细的用法参考:https://docs.python.org/2/library/logging.config.html logging.conf ############

python标准日志模块logging的使用方法

最近写一个爬虫系统,需要用到python的日志记录模块,于是便学习了一下.python的标准库里的日志系统从Python2.3开始支持.只要import logging这个模块即可使用.如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: 复制代码代码如下: import logging# 创建一个loggerlogger = logging.getLogger('mylogger')logger.setLevel(logging.DEBUG)# 创建一个han

python标准日志模块logging及日志系统设计

转载:http://www.cnblogs.com/goodhacker/p/3355660.html python的标准库里的日志系统从Python2.3开始支持.只要import logging这个模块即可使用.如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: 1 import logging 2 3 # 创建一个logger 4 logger = logging.getLogger('mylogger') 5 logger.setLevel(loggi

python日志模块-logging

日志模块 logging logging模块主要可以根据自定义日志信息,在程序运行的时候将日志打印在终端及记录日志到文件中.在这先了解一下logging支持的日志五个级别 debug() 调试级别,一般用于记录程序运行的详细信息 info() 事件级别,一般用于记录程序的运行过程 warnning() 警告级别,,一般用于记录程序出现潜在错误的情形 error() 错误级别,一般用于记录程序出现错误,但不影响整体运行 critical 严重错误级别 , 出现该错误已经影响到整体运行 简单用法,将

Python之配置日志模块logging

一.定义日志打印方式 如果我们运行自己的程序,有时候需要记录程序运行过程中出现的问题或者信息.可以运用日志模块logging来记录,该模块日志格式可以根据用户需求来自己定义. 常见打印日志信息形式如下: import logging logging.debug("========定义要打印的内容====debug①===========") logging.info("=========定义要打印的内容====info②===========") logging.w

Python 全栈开发八 日志模块

日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level). 1.日志的作用 通过log的分析,可以方便用户了解系统或软件.应用的运行情况:如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息:如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状

python日志模块logging

1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种(级别依次升高),分别对应的函数为debug().info().warning().error().critical(). >>> import logging >>> logging.debug("ni hao") >>> logging.info("ni hao2

python 重要的日志模块logging

一,logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息: print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据:logging则可以由开发者决定将信息输出到什么地方,以及怎么输出: logging模块主要分为四个部分: Loggers:提供应用程序直接使

python中的日志模块logging

1.日志级别5个: 警告Warning 一般信息Info  调试 Debug  错误Error 致命Critical 2.禁用日志方法 logging.disable(logging.DEBUG) 3.将日志写入文件 logging.basicConfig(filename='log.txt', level=logging.CRITICAL, format=' %(asctime)s - %(levelname)s - %(message)s') 4.格式化输出日志信息 注意事项: 1.日志输出