logging.basicConfig
设定日志输出格式及路径:输出到文件日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
默认情况下,logging将日志打印到屏幕,日志级别为WARNING
通过logging.basicConfig
函数对日志的输出格式及方式做相关设定
logging.basicConfig([**kwargs])
函数用来配置root logger, 为root logger创建一个StreamHandler
,设置默认的格式
import logging
# 日志级别列表,默认为logging.WARNING
LEVELS = (logging.NOTSET, logging.DEBUG, logging.INFO,
logging.WARNING, logging.ERROR, logging.CRITICAL)
LOG_FORMAT = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s' # 输出格式
DATE_FORMAT='%Y-%m-%d %H:%M:%S' # 日期格式
FILENAME = "mylog.log" # 日志文件
logging.basicConfig(level=LEVELS[1], format=LOG_FORMAT, datefmt=DATE_FORMAT,
filename=FILENAME, filemode='w')
logging.debug('This is a {0} message'.format("debug"))
logging.info('This is an {0} message'.format("info"))
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical error message')
format 参数说明
%(levelname)s: 日志级别名称
%(filename)s: 当前执行程序名
%(lineno)d: 当前行号
%(asctime)s: 日志时间
%(message)s:日志信息
import logging
# 创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# 创建FileHandler,用于写入日志文件
fh = logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG)
# 创建StreamHandler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 定义handler的输出格式
LOG_FORMAT = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s'
formatter = logging.Formatter(LOG_FORMAT)
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
logger.addHandler(fh)
logger.addHandler(ch)
# 记录一条日志
logger.info('test')
logging.getLogger([name])
返回一个logger实例,如果没有指定name,返回root logger。
logger.setLevel(lvl)
设置logger的level
logging.Formatter()
对象
设置日志显示格式,默认的时间格式为%Y-%m-%d %H:%M:%S。
logger.addHandler(hdlr)
通过handler对象可以把日志内容写到不同的地方
[1] https://docs.python.org/2/library/logging.html
[2] http://www.jb51.net/article/42626.htm
[3] http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html