级别排序
日志等级(LEVEL) | 描述 |
---|---|
CRITICAL | 打印critical级别,一个严重的错误,这表明程序本身可能无法继续运行 |
ERROR | 打印error,critical级别的日志,更严重的问题,软件没能执行一些功能 |
WARNING | 打印warning,error,critical级别的日志,一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”),这个软件还能按预期工作 |
INFO | 打印info,warning,error,critical级别的日志,确认一切按预期运行 |
DEBUG | 打印全部的日志,详细的信息,通常只出现在诊断问题上 |
部分名词解释
Logging.Formatter:这个类配置了日志的格式,在里面自定义设置日期和时间,输出日志的时候将会按照设置的格式显示内容。
Logging.Logger:Logger是Logging模块的主体,进行以下三项工作:
- 为程序提供记录日志的接口
- 判断日志所处级别,并判断是否要过滤
- 根据其日志级别将该条日志分发给不同handler
常用函数有:
Logger.setLevel() 设置日志级别
Logger.addHandler() 和 Logger.removeHandler() 添加和删除一个Handler
Logger.addFilter() 添加一个Filter,过滤作用
Logging.Handler:Handler基于日志级别对日志进行分发,如设置为WARNING级别的Handler只会处理WARNING及以上级别的日志。
常用函数有:
setLevel() 设置级别
setFormatter() 设置Formatter
调用生成log文件
import os
import logging
from logging.handlers import RotatingFileHandler
from config import settings
class Logger(object):
def __init__(self, log_name=""):
logs_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + os.sep + "logs"
if not os.path.exists(logs_dir):
os.mkdir(logs_dir)
if log_name:
self.log_path = logs_dir + os.sep + log_name
else:
self.log_path = logs_dir + os.sep + "manage.log"
handler = RotatingFileHandler(self.log_path, maxBytes=settings.LOG_MAX_SIZE, backupCount=settings.LOG_MAX_COUNT)
formatter = logging.Formatter('[%(asctime)s] %(levelname)s %(module)s [line:%(lineno)d] %(message)s')
handler.setFormatter(formatter)
self.logger = logging.getLogger(self.log_path)
self.logger.setLevel(10)
self.logger.addHandler(handler)
console = logging.StreamHandler()
console.setLevel(40)
self.logger.addHandler(console)