人生苦短_我用Python_logging日誌操做_011

話很少說,開搞,基礎是先使用自帶loggin模塊,level爲warning以上,python

進一步是自定義logger,level可自定義spa

#!/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   : 794281961@qq.com

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('這是個致命且嚴重的錯誤......')
相關文章
相關標籤/搜索