引言
具体实践
#!/usr/bin/env python
# -*- coding=utf-8 -*-
import logging
appname = "com.thebingo.mhtt"
#创建一个logging的实例logger
logger = logging.getLoggger(appname)
#设定全局日志级别为DEBUG
logger.setLevel(logging.DEBUG)
#创建一个屏幕的handler,并且设定级别为DEBUG
ch = logging.StreamingHandler()
ch.setLevel(logging.DEBUG)
#创建一个文件的handler,并且设定级别为DEBUG
fh= logging.FileHandler("toMyself.log")
fh.setLevel(logging.CRITICAL)
#设置日志的格式
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
#add formatter to ch and fh
ch.setFormatter(formatter)
fh.setFormatter(formatter)
#add ch and fh to logger
logger.addHandler(ch)
logger.addHandler(fh)
#'application' code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")
logging模块
logging模块提供logger,handler,filter,formatter.
logger:可以通过logging.getLogger(name)获取logger对象,如果不指定name则返回root对象。
handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。
全局日志的权力大于局部日志。全局日志级别为CRITICAL的话,局部变量想设置为INFO或者DEBUG都会失效。
关于formatter的配置,采用的是%(<dict key>)s的形式,就是字典的关键字替换。
https://docs.python.org/3.5/l…