【python】【内置模块】【九】【logging】

17 logging

变量/函数 含义 样例
FileHandler() 创建一个用来记录日志的文件句柄
import logging
import sys
import re

logger = logging.getLogger('LoggerName')

formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)-8s: %(message)s')

file_handler = logging.FileHandler('test.log')
file_handler.setFormatter(formatter)

console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter

console_filter = logging.Filter()
console_filter.filter = lambda record: re.search('error', record.getMessage()) is None
console_handler.addFilter(console_filter)

logger.addHandler(file_handler)
logger.addHandler(console_handler)

logger.setLevel(logging.INFO)

logger.debug('this is debug.')
logger.info('this is info')
logger.warning('this is %s', 'warning')
logger.error('this is %s' % 'error')
logger.critical('this is {}'.format('critical'))

output:
2018-03-10 22:40:43,025 LoggerName INFO    : this is info
2018-03-10 22:40:43,026 LoggerName WARNING : this is warning
2018-03-10 22:40:43,026 LoggerName CRITICAL: this is critical
Formatter() 创建日志的格式化字符串  
Handler 为FileHandler、StreamHandler的父类  
LogRecord 日志数据对象,通过getMessage()获取日志数据  
Logger 日志对象
>>> type(logging.getLogger('test'))
<class 'logging.Logger'>
LoggerAdapter 自定义一个日志对象,自己实现process等函数  
StreamHandler 流句柄  
addLevelName() 改变level的名字
>>> logging.addLevelName(logging.DEBUG, 'mydebug')
>>> logging.getLevelName(logging.DEBUG)
'mydebug'
getLevelName() 获取level的名字
>>> logging.getLevelName(logging.ERROR)
'ERROR'
getLogger() 获取一个日志对象
>>> type(logging.getLogger('test'))
<class 'logging.Logger'>
getLoggerClass() 获取日志对象  
makeLogRecord() 创建一条日志  
setLoggerClass 设置日志对象  
     
     
     
     
     
     
posted @ 2018-03-10 23:07  aclove  阅读(89)  评论(0)    收藏  举报