人生苦短_我用Python_logging日志操作_011

话不多说,开搞,基础是先使用自带loggin模块,level为warning以上,

进一步是自定义logger,level可自定义

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/6/25 21:09
# @Author  : Mr.chen
# @Site    : 
# @File    : class_06_23_log_001.py
# @Software: PyCharm
# @Email   : [email protected]

import logging, os

# 日志分为几个级别?     5个
# debug(调试信息)   info(详细信息)  warning(警告信息)   error(错误信息)     critical(致命的严重的错误)

# :1   日志收集器    logger  --->日志收集器(默认只收集warning级别以上的信息)
# :2   输出渠道    console file
# :3   创建自己的日志收集器,Logger,专门收集debug与info信息
'''
logging.debug('loging_model_debug信息')
logging.info('loging_model_info信息')
logging.warning('loging_model_warning信息')
logging.error('loging_model_error信息')
logging.critical('loging_model_critical信息')
# ps:因为Logging默认输出的level为warning以上的信息才能输出,所以这样的需求是不满足我们的,So,我们要自定义log
'''


class MyLog:
    # log流程:先收集日志--->后输出渠道
    # 第一:规范日志格式
    def my_log(self, name, level, log_path=(os.path.dirname(__file__)) + ('\\test_log.txt')):
        formatter = logging.Formatter('【%(asctime)s】-【%(levelname)s】-【%(filename)s-%(name)s】-【日志信息】:%(message)s')
        # 第二:创建自己的日志收集器,Logger,专门收集debug与info信息
        #     name, level=NOTSET,如果level不设置的话,默认为warning级别,命名的时候要大写
        logger = logging.Logger(name, level)
        # logger.debug('这是个调试信息......')
        # logger.info('这是个详细信息')
        # logger.warning('这是个警告信息......')
        # logger.error('这是个错误信息...........')
        # logger.critical('这是个致命且严重的错误......')

        # # 第三:创建输出渠道,warning级别以上的信息,输出到控制台
        ch = logging.StreamHandler()  # 输出到控制台
        ch.setLevel(level)
        logger.addHandler(ch)
        ch.setFormatter(formatter)

        # 第三:也可以,Logger,输入到文件中
        fh = logging.FileHandler(log_path, encoding='UTF-8')  # 输出到文件里
        fh.setLevel(level)
        fh.setFormatter(formatter)
        logger.addHandler(fh)
        logger.addHandler(ch)
        ch.setFormatter(formatter)
        return logger


if __name__ == '__main__':
    logger = MyLog().my_log('mr.chen', 'DEBUG')
    logger.debug('这是个调试信息......')
    logger.info('这是个详细信息')
    logger.warning('这是个警告信息......')
    logger.error('这是个错误信息...........')
    logger.critical('这是个致命且严重的错误......')

猜你喜欢

转载自www.cnblogs.com/mrchenyushen/p/9227231.html