Python——logging模块学习

一、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

你可能感兴趣的:(python)