logging库使用教程
logging日志模块
logging是python常用的日志模块,logging涉及三个概念:
- logger可以理解为记者,决定写什么
- handler可以理解为发布渠道,决定发到哪里
- formatter可以理解为文章格式,决定排版格式
- Level可以理解为重要程度,决定哪些日志的要记录
导入语句
import logging
from functools import wraps
获取日志记录器
logger=logging.getLogger(__name__) # 获取记录器
logger.setLevel(logging.DEBUG) # 设置日志级别
添加控制台处理器
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - [%(levelname)s]: %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
建议demo1
import logging
from functools import wraps
logger=logging.getLogger(__name__) # 获取记录器
logger.setLevel(logging.DEBUG) # 设置日志级别
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - [%(levelname)s]: %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
print('hello')
def happy(func):
@wraps(func)
def wrapper():
logger.info("this is a log system")
func()
return wrapper
@happy
def hi():
print('name')
hi()
print(hi.__name__) # 输出的是hi
建议demo2
import logging
import logging.config
LOGGING_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'detailed': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s'
},
'simple': {
'format': '%(levelname)s - %(message)s'
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'INFO',
'formatter': 'simple',
'stream': 'ext://sys.stdout'
},
'file': {
'class': 'logging.FileHandler',
'level': 'DEBUG',
'formatter': 'detailed',
'filename': 'app_debug.log',
'mode': 'a'
},
'error_file': {
'class': 'logging.FileHandler',
'level': 'WARNING',
'formatter': 'detailed',
'filename': 'app_error.log',
'mode': 'a'
}
},
'loggers': {
'': { # 根日志器
'level': 'DEBUG',
'handlers': ['console', 'file', 'error_file']
},
'database': {
'level': 'INFO',
'handlers': ['console'],
'propagate': False # 不传递给根日志器
}
}
}
# 使用配置
logging.config.dictConfig(LOGGING_CONFIG)
logger = logging.getLogger(__name__) # 获取当前模块的日志器

浙公网安备 33010602011771号