Python3 logging tips

  • 官方文檔:Logging HOWTOhtml

  • 官方文檔:logging.config 模塊python

  • 日誌的等級(level)以下,只有大於等於配置的等級時,日誌纔會被記錄。ide

# 默認等級爲 WARNING
NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
  • 官方模塊有十幾個 Handler(Useful Handlers),存在於 logging 和 logging.handlers 模塊。經常使用的有:spa

logging.StreamHandler	# 輸出日誌到控制檯時使用(sys.stderr)
logging.FileHandler	# 輸出日誌到磁盤文件
logging.handlers.RotatingFileHandler	# 循環日誌文件
import logging
logging.basicConfig(level=logging.INFO,
				format='%(message)s: %(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s',
				datefmt='%Y-%m-%d %H:%M:%S',
				filename='log.log',
				filemode='a')
logging.error(fullpath)    # 日誌將記錄到 log.log 文件
#encoding: utf-8
#author: walker
#date: 2018-04-10 
#summary: 控制日誌同時輸出到控制檯和日誌文件,兩種輸出能夠有不一樣的日誌等級

import os
import logging.config

def GetMixLogger(logPathFile):
	logDir = os.path.dirname(logPathFile)
	if not os.path.isdir(logDir):
		os.mkdir(logDir)

	# log配置字典
	loggingDict = {
		'version': 1,
		'disable_existing_loggers': False,
		'formatters': {
			'fileFormatter': {
				'format': '%(message)s: %(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s'
			},
			'consoleFormatter': {
				'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]: %(message)s'
			},
		},
		'filters': {},
		'handlers': {
			'consoleHandler': {
				'level': 'DEBUG',
				'class': 'logging.StreamHandler',  # 輸出到 console
				'formatter': 'consoleFormatter'
			},
			'fileHandler': {
				'level': 'ERROR',
				'class': 'logging.FileHandler',  # 保存到文件
				'formatter': 'fileFormatter',
				'filename': logPathFile,  # 日誌文件
				'encoding': 'utf-8', 
			},
		},
		'loggers': {
			'mix': {
				'handlers': ['consoleHandler', 'fileHandler'],  # 同時輸出到控制檯和日誌文件
				'level': 'DEBUG',
				'propagate': True
			}
		},
	}
	
	logging.config.dictConfig(loggingDict)  # 導入配置
	logger = logging.getLogger('mix')  # 生成 logger 實例
	
	return logger
	

if __name__ == '__main__':
	mixLogger = GetMixLogger(r'F:\test\log.log')
	
	mixLogger.info('info message') 		# 同時輸出到 console 和文件
	mixLogger.error('error message')	# 只輸出到文件	


*** walker ***blog

相關文章
相關標籤/搜索