# @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')