zoukankan      html  css  js  c++  java
  • python- 日志学习

    # @File : learn_logging.py
    
    #-*- coding:utf-8 -*-
    
    """
    日志:log 记录代码执行的过程
    一旦记录下来,就可以根据日志去定位排查问题
    
    日志的级别(由低到高):debug < info < waring < error <critical
    可自定义日志输出的级别,可灵活控制
    
     logging库 是python自带的
    
    """
    import logging
    # # root = RootLogger(WARNING) 是系统自定义的收集日志的收集器;
    # # 默认收集并输入warning级别及其以上的日志信息
    #
    # # handles 是输出渠道,默认输出渠道是console控制台
    # logging.debug('这是一个debug信息')
    # logging.info('这是一个info信息')
    # logging.warning('这是一个waring信息')
    # logging.error('这是一个error信息')
    # logging.critical('这是一个crtical信息')
    
    
    
    
    # 创建一个日志收集器并命名
    my_logger=logging.getLogger('test_logger')
    my_logger.setLevel('DEBUG')# 设置收集器的级别
    
    # 设置输出格式
    formatter = logging.Formatter('%(asctime)s - %(filename)s - %(name)s - %(levelname)s - 日志信息: %(message)s')
    
    # 指定输出渠道,输出到控制台
    ch=logging.StreamHandler()#输入到控制台
    ch.setLevel('DEBUG')# 设置输出渠道的级别;
    # 如果收集器中的级别与输出渠道级别不同,取两者的交集
    ch.setFormatter(formatter)#日志输出时,按指定的输出格式输出
    
    #输出到本地文件
    fh=logging.FileHandler('log_file.txt',encoding='utf-8')#输出到本地log_file文档中;日志中有中文,需要设置编码
    fh.setLevel('ERROR')#输出级别为error
    fh.setFormatter(formatter)#日志输出时,按指定的输出格式输出
    
    #对接:收集器与输出渠道
    my_logger.addHandler(ch)
    my_logger.addHandler(fh)
    
    #日志信息
    my_logger.debug('这是一个debug信息')
    my_logger.info('这是一个info信息')
    my_logger.warning('这是一个waring信息')
    my_logger.error('这是一个error信息')
    my_logger.critical('这是一个crtical信息')

    编写一个属于自己的可控制的日志类

    # @File : learn_logging.py
    
    #-*- coding:utf-8 -*-
    
    
    import logging
    
    class MyLog:
    
     def my_log(self,level,msg):
      # 创建一个日志收集器并命名
        my_logger=logging.getLogger('test_logger')
        my_logger.setLevel('DEBUG')# 设置收集器的级别
    
      # 设置输出格式
        formatter = logging.Formatter('%(asctime)s - %(filename)s - %(name)s - %(levelname)s - 日志信息: %(message)s')
    
      # 指定输出渠道,输出到控制台
        ch=logging.StreamHandler()#输入到控制台
        ch.setLevel('DEBUG')# 设置输出渠道的级别;
      # 如果收集器中的级别与输出渠道级别不同,取两者的交集
        ch.setFormatter(formatter)#日志输出时,按指定的输出格式输出
    
      #输出到本地文件
        fh=logging.FileHandler('log_file.txt',encoding='utf-8')#输出到本地log_file文档中;日志中有中文,需要设置编码
        fh.setLevel('DEBUG')#输出级别为debug
        fh.setFormatter(formatter)#日志输出时,按指定的输出格式输出
    
      #对接:收集器与输出渠道
        my_logger.addHandler(ch)
        my_logger.addHandler(fh)
    
        if level == 'DEBUG':
            my_logger.debug(msg)
        elif level == 'INFO':
            my_logger.info(msg)
        elif level == 'WARNING':
            my_logger.warning(msg)
        elif level == 'ERROR':
            my_logger.error(msg)
        elif level == 'CRITICAL':
            my_logger.critical(msg)
    
     def debug1(self,msg):
        self.my_log('DEBUG',msg)
     def info1(self,msg):
        self.my_log('INFO',msg)
     def warning(self,msg):
        self.my_log('WARNING',msg)
     def error(self,msg):
        self.my_log('ERROR',msg)
     def crtical(self,msg):
        self.my_log('CRTICAL',msg)
    
    
    if __name__ == '__main__':
      my_logger=MyLog()
      my_logger.debug1('haha')
      my_logger.info1('heng')
  • 相关阅读:
    TLE: poj 1011 Sticks
    UVa 116 Unidirectional TSP
    csuoj 1215 稳定排序
    UVa 103 Stacking Boxes
    UVa 147 Dollars
    UVa 111 History Grading
    怎么在ASP.NET 2.0中使用Membership
    asp.net中如何删除cookie?
    ASP.NET中的HTTP模块和处理程序[收藏]
    NET开发中的一些小技巧
  • 原文地址:https://www.cnblogs.com/Aphrodite/p/10150162.html
Copyright © 2011-2022 走看看