day18 日志模块 - logging

"""
# filename: 文件名
# format: 数据的格式化输出. 最终在日志文件中的样子
# 时间-名称-级别-模块: 错误信息
# datefmt: 时间的格式
# level: 错误的级别权重, 当错误的级别权重⼤于等于leval的时候才会写入⽂件 
logging.basicConfig(filename='x1.txt',
                    format='%(asctime)s - %(name)s - %(levelname)s -%
(module)s:  %(message)s',datefmt='%Y-%m-%d %H:%M:%S',level=10) 
# 当前配置表示10以上的分数会被写⼊文件
# CRITICAL = 50
# FATAL = CRITICAL
# ERROR = 40
# WARNING = 30
# WARN = WARNING
# INFO = 20
# DEBUG = 10
# NOTSET = 0
logging.critical("我是critical") # 50分
logging.error("我是error") # 40分
logging.warning("我是警告")  # 30
logging.info("我是基本信息")  # 20
logging.debug("我是调试") # 10
logging.log(2, "我是自定义") # 自定义,看着给分;

可以设置不同的日志等级,用于控制日志的输出,


日志等级:使用范围

FATAL:致命错误
CRITICAL:特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用
ERROR:发生错误时,如IO操作失败或者连接问题
WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误
INFO:处理请求或者状态变化等日常事务
DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态

"""

# 一般会通过文件助手(FileHandler)来记录一个或多个日志

import logging

# 创建一个操作⽇志的对象logger(依赖FileHandler)
file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8') 
file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - % (levelname)s -%(module)s: %(message)s"))
logger1 = logging.Logger('s1', level=logging.ERROR)
logger1.addHandler(file_handler)
logger1.error('我是A系统')

 # 再创建一个操作日志的对象logger(依赖FileHandler)
file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8') 
file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"))
logger2 = logging.Logger('s2', level=logging.ERROR)
logger2.addHandler(file_handler2)
logger2.error('我是B系统')



# FileHandler 实例

import logging
import traceback


class LoggerHelper(object):
    _i = None

    @classmethod
    def instance(cls):
        if cls._i:
            return cls._i
        else:
            cls._i = LoggerHelper()  # LoggerHelper()
            return cls._i  # obj

    def __init__(self):
        error_log_file = logging.FileHandler('cdn_refersh_error.log', 'a+', encoding='utf-8')
        error_log_fmt = logging.Formatter(fmt="%(asctime)s %(name)s %(message)s")
        error_log_file.setFormatter(error_log_fmt)
        error_logger = logging.Logger('ERROR', level=logging.ERROR)
        error_logger.addHandler(error_log_file)
        self.error_logger = error_logger

        access_log_file = logging.FileHandler('cdn_refersh_access.log', 'a+', encoding='utf-8')
        access_log_fmt = logging.Formatter(fmt="%(asctime)s %(name)s %(message)s")
        access_log_file.setFormatter(access_log_fmt)
        access_logger = logging.Logger('INFO', level=logging.INFO)
        access_logger.addHandler(access_log_file)
        self.access_logger = access_logger


log = LoggerHelper.instance()

try:
    print(1 / 0)
except Exception as e:
    log.error_logger.log(logging.ERROR, e)
    log.error_logger.error(traceback.format_exc())
    log.access_logger.log(logging.INFO, e)
    log.access_logger.info(e)

  

posted @ 2018-11-16 19:19  秋风亦冷  阅读(124)  评论(0编辑  收藏  举报