上篇说了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的设置。。
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模块就算告一段落了。。。。