python 日志

日志输出

输出路径

  可以输出控制台,可以输出文件,也可以发送邮件

日志等级

DEBUG:详细的信息,通常只出现在诊断问题上
INFO:确认一切按预期运行
WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来
                (如:磁盘空间低”),这个软件还能按预期工作
ERROR:更严重的问题,软件没能执行一些功能
CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行

输出到控制台

import logging  
logging.basicConfig(level=logging.WARNING,  
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')  

输出到文件

logging.basicConfig(level=logging.WARNING,  
                                filename='./logs.txt',  
                                filemode='w',  
                                format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')  

使用logging记录

# 开始使用log功能
logging.info('info message')  
logging.debug('debug message')  
logging.warning('这warning message')  
logging.error('error message')  
logging.critical('critical message')

 

自定义日志输出方式

步骤

获取logger,为logger设置lever,getlogger(返回loggger)

创建hander,FileHandler(文件名,mode输出模式,返回文件handler),StreamHandler(返回控制台handler)

创建Formater,Formatter(

       %(levelno)s: 打印日志级别的数值
            %(levelname)s: 打印日志级别名称
            %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
            %(filename)s: 打印当前执行程序名
            %(funcName)s: 打印日志的当前函数
            %(lineno)d: 打印日志的当前行号
            %(asctime)s: 打印日志的时间
            %(thread)d: 打印线程ID
            %(threadName)s: 打印线程名称
            %(process)d: 打印进程ID
            %(message)s: 打印日志信息   

)

定义输出格式,(handler obj).setFormater()

添加handler,(logger obj).addHandler()

import logging

# 第一步,创建一个logger  
logger = logging.getLogger()
logger.setLevel(logging.INFO)  # Log等级总开关  

# 第二步,创建一个handler,用于写入日志文件  
logfile = './logs.txt'
fh = logging.FileHandler(logfile, mode='a')  # open的打开模式这里可以进行参考
fh.setLevel(logging.DEBUG)  # 输出到file的log等级的开关  

# 第三步,再创建一个handler,用于输出到控制台  
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)  # 输出到console的log等级的开关  

# 第四步,定义handler的输出格式  
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d]
                              - % (levelname)s: % (message)s")
fh.setFormatter(formatter)
ch.setFormatter(formatter)

# 第五步,将logger添加到handler里面  
logger.addHandler(fh)
logger.addHandler(ch)
# 日志  
logger.debug('这是 logger debug message')
logger.info('这是 logger info message')
logger.warning('这是 logger warning message')
logger.error('这是 logger error message')
logger.critical('这是 logger critical message')

 

邮件输出

以后补

posted @ 2020-08-12 19:01  inhocho  阅读(10)  评论(0)    收藏  举报