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]
新聞熱點
疑難解答