Python 配置日志文件

在程序开发阶段,显然我们需要大量的日志。打个比方,我们的程序是一个卖东西的网站,那么关于用户关于钱的,关于商品销售等所有操作我们都应该记录下来,起码可以知道用户花了多少钱,商品销售的怎么样了。

当我们使用爬虫爬取网页时,我们通过日志,能更直观得了解到我们得爬虫爬到哪了,数据是怎样的,有没有哪里报错等等等等信息。

日志级别:
critical > error > warning > info > debug
级别越高打印的日志越少,反之亦然,
debug : 打印全部的日志
info : 打印info,warning,error,critical级别的日志
warning : 打印warning,error,critical级别的日志
error : 打印error,critical级别的日志
critical : 打印critical级别

好了,不扯蛋了,咱们开始配置日志文件吧:

import logging   
import getpass  
import sys
class MyLog(object):
    def __init__(self):
        self.user=getpass.getuser()   #获取系统当前登陆用户(即系统操作用户)
        self.logger=logging.getLogger(self.user)  #日志对象
        self.logger.setLevel(logging.DEBUG)   #默认日志等级为debug级
        
     '''定义日志文件名
	sys.argv是程序执行该py文件时的路径,后面我有截图
	所以这里我把路径的后缀名改成.log,其他不变,得到跟程序文件同名的日志文件   
	当然,你也可以设置一个自己想存放的路径,这个没有影响的
	好比如我想把输出的日志文件放到我的桌面上,则改成:
	self.logFile=r'C:\Users\Computer-huangbiao\Desktop\MyLog.log'就可以了
     '''
        self.testLogFile=sys.argv    #这里用来做测试,后面有截图显示
        self.logFile=sys.argv[0][0:-3]+'.log'
        print('self.testLogFile:',self.testLogFile)
        print('self.logFile:',self.logFile)
	#关于日志的格式参数设置,大家可以参考:(https://blog.csdn.net/enjoy_endless/article/details/76214583)
        self.formatter=logging.Formatter( '%(asctime)-12s %(levelname)-8s %(name)-10s %(message)-12s\r\n' )

###     日志输入到日志文件内
        self.logHand = logging.FileHandler( self.logFile , encoding='utf8' )
        self.logHand.setFormatter( self.formatter )
        self.logHand.setLevel( logging.DEBUG )
        
        #二进制流输出到Console,这里也可以不配置,也就时不在Console上显示
        self.logHandSt = logging.StreamHandler()
        self.logHandSt.setFormatter( self.formatter )
        self.logHandSt.setLevel(logging.DEBUG)
        
        #把Hand加入到logger对象中
        self.logger.addHandler( self.logHand )
        self.logger.addHandler( self.logHandSt )

###   日志的五个级别对应下面五个函数 , 自上而下级别原来越高
    def debug(self,msg):
        self.logger.debug( msg )
        
    def info(self,msg):
        self.logger.info( msg )
        
    def warn(self,msg):
        self.logger.debug( msg )
        
    def error(self,msg):
        self.logger.debug( msg )
    
    #临界的,批评的
    def critical(self,msg):
        self.logger.critical( msg )
        
if __name__=='__main__':
    mylog=MyLog()
    mylog.debug('I am debug 测试中文')
    mylog.info('I am info ')
    mylog.warn('I am warn ')
    mylog.error('I am error ')
    mylog.critical('I am critical 测试中文')


关于上面提到的 sys.argv的意思如下
在这里插入图片描述

Console面板截图:

在这里插入图片描述

MyLog.log截图:

在这里插入图片描述

当我们写好这个模块后,以后想要在其他的python程序中使用日志的话,可以直接 from MyLog import MyLog 导入哦
感谢您的阅读!

猜你喜欢

转载自blog.csdn.net/qq_39022311/article/details/84196812