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')
原文地址:https://www.cnblogs.com/Aphrodite/p/10150162.html