Python日志模块logging简介
logging分为4个模块: loggers, handlers, filters, and formatters.
●loggers: 提供应用程序调用的接口
●handlers: 把日志发送到指定的位置
●filters: 过滤日志信息
●formatters: 格式化输出日志
logger
logger.setlevel() 设置日志级别
logger.addhandler()和logger.removehandler() 增加和删除日志处理器
logger.addfilter()和logger.removefilter() 增加和删除过滤器
logger.debug(), logger.info(), logger.warning(), logger.error(), and logger.critical() 创建不同的级别的日志
getlogger() 获取日志的根实例
handler
setlevel() 设置日志级别
setformatter() 设置输出格式
addfilter() and removefilter() 增加和删除过滤器
formatter
默认形式为: %y-%m-%d %h:%m:%s.
格式为: %()s
日志配置管理
硬编码形式
import logging
# create logger
logger = logging.getlogger('simple_example')
logger.setlevel(logging.debug)
# create console handler and set level to debug
ch = logging.streamhandler()
ch.setlevel(logging.debug)
# create formatter
formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# add formatter to ch
ch.setformatter(formatter)
# add ch to logger
logger.addhandler(ch)
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
输出
$ python simple_logging_module.py
2005-03-19 15:10:26,618 - simple_example - debug - debug message
2005-03-19 15:10:26,620 - simple_example - info - info message
2005-03-19 15:10:26,695 - simple_example - warning - warn message
2005-03-19 15:10:26,697 - simple_example - error - error message
2005-03-19 15:10:26,773 - simple_example - critical - critical message
通过文件配置管理日志
代码:
import logging
import logging.config
logging.config.fileconfig('logging.conf')
# create logger
logger = logging.getlogger('simpleexample')
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
配置文件:
[loggers]
keys=root,simpleexample
[handlers]
keys=consolehandler
[formatters]
keys=simpleformatter
[logger_root]
level=debug
handlers=consolehandler
[logger_simpleexample]
level=debug
handlers=consolehandler
qualname=simpleexample
propagate=0
[handler_consolehandler]
class=streamhandler
level=debug
formatter=simpleformatter
args=(sys.stdout,)
[formatter_simpleformatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
输出:
$ python simple_logging_config.py
2005-03-19 15:38:55,977 - simpleexample - debug - debug message
2005-03-19 15:38:55,979 - simpleexample - info - info message
2005-03-19 15:38:56,054 - simpleexample - warning - warn message
2005-03-19 15:38:56,055 - simpleexample - error - error message
2005-03-19 15:38:56,130 - simpleexample - critical - critical message
日志格式
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcname)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程id
%(threadname)s: 打印线程名称
%(process)d: 打印进程id
%(message)s: 打印日志信息
流程图
上一篇: python实现任意位置文件分割的实例
下一篇: Coreldraw合并多个文档的技巧
推荐阅读