前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3 logging tips

Python3 logging tips

作者头像
py3study
发布2020-01-03 10:37:16
3460
发布2020-01-03 10:37:16
举报
文章被收录于专栏:python3python3
  • 官方文档:Logging HOWTO
  • 官方文档:logging.config 模块
  • 日志的等级(level)如下,只有大于等于配置的等级时,日志才会被记录。
代码语言:javascript
复制
# 默认等级为 WARNING
NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
  • 官方模块有十几个 Handler(Useful Handlers),存在于 logging 和 logging.handlers 模块。常用的有:
代码语言:javascript
复制
logging.StreamHandler	# 输出日志到控制台时使用(sys.stderr)
logging.FileHandler	# 输出日志到磁盘文件
logging.handlers.RotatingFileHandler	# 循环日志文件
代码语言:javascript
复制
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 文件
代码语言:javascript
复制
#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')	# 只输出到文件	
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档