码迷,mamicode.com
首页 > 编程语言 > 详细

Python的日志功能

时间:2019-08-27 10:41:43      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:功能   错误信息   字符   import   操作   mamicode   alt   输出   默认   

python自带的logging是日志处理模块,可以记录日志,并输出到控制台和文件等。
日志分5个级别:
DEBUG:调试信息,权重10
INFO:一般信息,权重20
WARNING:警告信息,权重30
ERROR:错误信息,权重40
CRITICAL:致命信息,权重50

一、输出日志到控制台(默认情况)

1、不设置日志级别,默认只输出WARNING及以上权重的信息

import logging

logging.debug(debug级别的信息)
logging.info(info级别的信息)
logging.warning(warning级别的信息)
logging.error(error级别的信息)
logging.critical(critical级别的信息)

运行结果:

WARNING:root:warning级别的信息
ERROR:root:error级别的信息
CRITICAL:root:critical级别的信息

2、设置日志级别,可以输出级别及以上以上权重的信息
如设置级别为INFO,不是只输出INFO,而是输出INFO、WARNING、ERROR、CRITICAL信息
如设置级别为ERROR,输出ERROR、CRITICAL信息

import logging

logging.basicConfig(level=logging.INFO)

logging.debug(debug级别的信息)
logging.info(info级别的信息)
logging.warning(warning级别的信息)
logging.error(error级别的信息)
logging.critical(critical级别的信息)

运行结果:

INFO:root:info级别的信息
WARNING:root:warning级别的信息
ERROR:root:error级别的信息
CRITICAL:root:critical级别的信息

3、格式化日志信息

import logging

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%Y-%m-%d %H:%M:%S" 
#basicConfig只在第一次调用时起作用,后续再次调用无任何操作
logging.basicConfig(level=logging.INFO, format=LOG_FORMAT, datefmt=DATE_FORMAT)

logging.debug(debug级别的信息)
logging.info(info级别的信息)

运行结果:

2019-08-27 09:07:30 - DEBUG - debug级别的信息
2019-08-27 09:07:30 - INFO - info级别的信息

format格式字符串的字段列表:

技术图片

二、同时输出日志到控制台、文件

默认情况下只输出日志到控制台,可以通过handlers的列表参数只输出一种,或同时输出多种

import logging

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%Y-%m-%d %H:%M:%S" 
fs = logging.StreamHandler() #输出日志到控制台
fp = logging.FileHandler(log.txt, encoding=utf-8) #输出日志到文件
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT, handlers=[fs, fp])

logging.debug(debug级别的信息)
logging.info(info级别的信息)

三、记录异常信息日志

记录异常信息日志,可以使用logging.exception

import logging

def divide(x, y):
    return x/y

try:
    divide(1/0)
except Exception as e:
    logging.exception(e)

运行结果如下:

ERROR:root:division by zero
Traceback (most recent call last):
  File "E:\Work\Projects\python\test1.py", line 27, in <module>
    divide(1/0)
ZeroDivisionError: division by zero

exception背后是调用error的,唯一的不同时,有一个默认参数exc_info=True。
所以也可以logging.exception也可以换成logging.error 

def divide(x, y):
    return x/y
    
try:
    divide(1/0)
except Exception as e:
    logging.error(执行函数divide出错, exc_info=True)

运行结果:

ERROR:root:执行函数divide出错
Traceback (most recent call last):
  File "E:\Work\Projects\python\test1.py", line 27, in <module>
    divide(1/0)
ZeroDivisionError: division by zero

 

Python的日志功能

标签:功能   错误信息   字符   import   操作   mamicode   alt   输出   默认   

原文地址:https://www.cnblogs.com/gdjlc/p/11416581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!