zoukankan      html  css  js  c++  java
  • 人生苦短_我用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   : 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('这是个致命且严重的错误......')
  • 相关阅读:
    循环排序总结
    # 区间合并总结
    快慢指针
    #双指针总结
    滑动窗口总结
    leetcode 第 221 场周赛
    剑指 Offer 07. 重建二叉树
    leetcode 406. 根据身高重建队列
    [JLOI2014]松鼠的新家 T22 D71
    软件包管理器 T21 D71
  • 原文地址:https://www.cnblogs.com/mrchenyushen/p/9227231.html
Copyright © 2011-2022 走看看