Python日志模块示例

给出Python日志模块显示配置和文件配置两种方式的示例

显示配置

在程序中直接调用函数来设置参数

#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
# 创建一个logger
logger = logging.getLogger('example')
logger.setLevel(logging.DEBUG)
# 创建一个输出到控制台的handler
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR)
# 创建一个输出到文件的handler
fh = logging.FileHandler('loggingtest.log')
fh.setLevel(logging.INFO)
# 设置输出格式
fmt = logging.Formatter('%(asctime)s - %(threadName)s - [%(levelname)s] : %(message)s')
# handler设置formatter
sh.setFormatter(fmt)
fh.setFormatter(fmt)
# logger添加handler
logger.addHandler(sh)
logger.addHandler(fh)
# 写日志
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

文件配置

通过配置文件进行配置,使用fileConfig()函数读取配置文件

  • 配置文件 logging.conf :
[loggers]
keys=root,example01
[logger_root]
level=DEBUG
handlers=hand01,hand02
[logger_example01]
handlers=hand01,hand02
qualname=example01
propagate=0
[handlers]
keys=hand01,hand02
[handler_hand01]
class=StreamHandler
level=INFO
formatter=form02
args=(sys.stderr,)
[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form01
args=('log.log','a')
[formatters]
keys=form01,form02
[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
[formatter_form02]
format=%(asctime)s - %(threadName)s - [%(levelname)s] : %(message)s
  • 程序 LogByFile.py :
#!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('example01')
# 写日志
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

欢迎关注公众号: FullStackPlan 获取更多干货

Copyright © 2016 - 2017 LBD All Rights Reserved.

访客数 : | 访问量 :