python logging 模块(二)

上篇说了python logging 模块的基本用法,这篇来说点有的没的。。

import logging

# 输出到控制台

console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)s: %(levelname)s %(message)s')
console.setFormatter(formatter)
logging.getLogger().addHandler(console)

# 输出到文件test.log

console_1 = logging.FileHandler('test2/test1.log')
console_1.setLevel(logging.INFO)
logging.getLogger().addHandler(console_1)

logging.debug("debug")

logging.info("info")
logging.warn("warn")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
logging.info("asdasdasd")

上面讲述的事另一种使用logging的方法,这里我们设置了一个StreamHandler 和一个FileHandler , 一个用来向控制台输出,一个输出到文件中。。当然,我们也可以向上篇文章一样,设置各种参数,具体看上面代码中console的设置。。

  • Formatter
    Formatter 有三个参数 。 第一个是用来控制输出内容的格式,第二个是用来控制输出内容中的时间的格式,这个在上篇文章中已经具体的讲过了。第三个参数,它的作用是,如果你是在看这种‘%’号不顺眼,你可以把它换成 ‘$’, ‘{‘, 不过换了之后有一点需要注意的就是,这个参数换了之后,第一个参数需要换成下面的格式
BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"

_STYLES = {
    '%': (PercentStyle, BASIC_FORMAT),
    '{': (StrFormatStyle, '{levelname}:{name}:{message}'),
    '$': (StringTemplateStyle, '${levelname}:${name}:${message}'),
}
  • getLogger()
    这个方法中需要输入你要定义的logger的name, 不输入默认为root。

  • RotatingFileHandler

# 
Rthandler = RotatingFileHandler('test2/test2.log', maxBytes=1024, backupCount=5)
Rthandler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger().addHandler(Rthandler)

这个类的作用是用来备份日志文件的,通过maxBytes 来限定日志文件的大小, 当文件的字节数超出限制后,会把前面的文件内容被份到 test.log.1 文件下,backupCount 是用来限定产生的文件数的个数。

还有很多种Handler , 他们的用法都大同小益。。。就不一一说明了,下一篇说说ScodkeHandler,Filter,以及最后的logging.conf, logging模块就算告一段落了。。。。

你可能感兴趣的:(python)