Python logging模块
2017-12-18 19:56
357 查看
logger是一个树结构,默认有个根root,其他logger都是其上的枝桠
一、简单使用
默认情况下,logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。
二、通过logging.basicConfig函数对日志的输出格式及方式做相关配置
logging.basicConfig函数各参数:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,’w’或’a’
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(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: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
三、handler 将日志同时输出到指定位置
1、将日志输出到屏幕
2、将日志输出到文件
3、设定日志输出级别
StreamHandler级别(WARNING)>log级别(info),在屏幕只输出>=WARNING日志
FileHandler级别(DEBUG)< log级别(info),在日志文件只输出>=INFO的日志
四、日志备份
五、通过logging.config模块配置日志
logging.config配置文件如下:
程序读取配置文件:
一、简单使用
import logging logging.debug('debug message') logging.info('info message') logging.warning('warn message') logging.error('error message') logging.critical('critical message') 屏幕上打印: WARNING:root:warn message ERROR:root:error message CRITICAL:root:critical message
默认情况下,logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。
二、通过logging.basicConfig函数对日志的输出格式及方式做相关配置
import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename='D:/test.log', filemode='w') logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message') 查看D:/test.log的内容为: Mon, 18 Dec 2017 18:51:18 test.py[line:8] INFO info message Mon, 18 Dec 2017 18:51:18 test.py[line:9] WARNING warning message Mon, 18 Dec 2017 18:51:18 test.py[line:10] ERROR error message Mon, 18 Dec 2017 18:51:18 test.py[line:11] CRITICAL critical message
logging.basicConfig函数各参数:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,’w’或’a’
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(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: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
三、handler 将日志同时输出到指定位置
1、将日志输出到屏幕
import logging logger = logging.getLogger('test') logger.addHandler(logging.StreamHandler()) # 添加StreamHandler logger.setLevel(logging.INFO) # 输出所有大于INFO级别的log logger.info('info message message.') logger.debug('debug message.') # 不输出 屏幕上打印: info message message.
2、将日志输出到文件
import logging logger = logging.getLogger('test') logger.addHandler(logging.StreamHandler()) logger.addHandler(logging.FileHandler('D:/test1.log')) # 再添一个FileHandler logger.setLevel(logging.INFO) # 输出所有大于INFO级别的log logger.info('info message.') logger.debug('debug message.') # 不输出 把日志同时输出到屏幕和日志文件中: info message.
3、设定日志输出级别
import logging logger = logging.getLogger('test') logger.setLevel(logging.INFO) # 输出所有大于INFO级别的log fmt = logging.Formatter('%(name)s - %(levelname)s - %(asctime)s - %(message)s') # 添加StreamHandler,并设置级别为WARNING stream_hdl = logging.StreamHandler() stream_hdl.setLevel(logging.WARNING) stream_hdl.setFormatter(fmt) logger.addHandler(stream_hdl) # 添加FileHandler,并设置级别为DEBUG file_hdl = logging.FileHandler('D:/test2.log') file_hdl.setLevel(logging.DEBUG) file_hdl.setFormatter(fmt) logger.addHandler(file_hdl) logger.info('info message.') logger.debug('debug message.') 屏幕不输出日志 日志文件test2输出日志: test - INFO - 2017-12-18 19:30:17,813 - info message.
StreamHandler级别(WARNING)>log级别(info),在屏幕只输出>=WARNING日志
FileHandler级别(DEBUG)< log级别(info),在日志文件只输出>=INFO的日志
四、日志备份
import logging from logging.handlers import RotatingFileHandler logger = logging.getLogger('test') logger.setLevel(logging.INFO) # 输出所有大于INFO级别的log fmt = logging.Formatter('%(name)s - %(levelname)s - %(asctime)s - %(message)s') file_hdl = RotatingFileHandler('D:/test3.log', maxBytes=10*1024*1024,backupCount=5) #最多备份5个日志文件,每个日志文件最大10M file_hdl.setLevel(logging.DEBUG) file_hdl.setFormatter(fmt) logger.addHandler(file_hdl) logger.info('info message.') logger.debug('debug message.')
五、通过logging.config模块配置日志
logging.config配置文件如下:
[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=
程序读取配置文件:
import logging import logging.config logging.config.fileConfig("D:/logging.conf") # 采用配置文件 # create logger logger = logging.getLogger("simpleExample") # "application" code logger.debug("debug message") logger.info("info message") logger.warning("warn message") logger.error("error message") logger.critical("critical message") 在屏幕输出: 2017-12-18 19:52:44,533 - simpleExample - DEBUG - debug message 2017-12-18 19:52:44,534 - simpleExample - INFO - info message 2017-12-18 19:52:44,534 - simpleExample - WARNING - warn message 2017-12-18 19:52:44,534 - simpleExample - ERROR - error message 2017-12-18 19:52:44,534 - simpleExample - CRITICAL - critical message
相关文章推荐
- python 的日志logging模块学习
- python模块:logging
- Python logging 日志模块
- python 的日志logging模块
- python 的日志logging模块
- python logging模块 自定义输出
- python学习之logging模块
- python 的日志logging模块学习
- Python logging模块
- python-logging.config【日志模块】
- python3之xml&ConfigParser&hashlib&Subprocess&logging模块
- 4.Python记录日志logging模块的使用
- python常用模块补充hashlib configparser logging,subprocess模块
- python logging模块
- Python模块知识5:日志logging
- python模块学习之logging
- 使用python的logging模块
- python3 logging 日志记录模块
- python之logging模块
- python的logging模块详解