Python的日志功能
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的日志功能的更多相关文章
- 使用python实现日志功能
Python脚本日志系统 Python通过logging模块提供日志功能,关于logging模块的使用网络上已经有很多详细的资料,这里要分享的是怎样在实际工程中使用日志功能. 假设要开发一个自动化 ...
- Atitit php java python nodejs错误日志功能的比较
Atitit php java python nodejs错误日志功能的比较 1.1. Php方案 自带 1 1.2. Java解决方案 SLF4J 1 1.3. Python解决方案 自带lo ...
- 【Python】自己写日志功能
Python有自带的logging模块,用于日志记录,功能很强大,但不好用,使用挺麻烦的,而且发现了几个bug,调用了一个logger.warning()一次,结果日志文件中出现了n行记录,且逐渐变成 ...
- Python日志功能与处理逻辑
前言 在应用程序执行过程中,我们希望通过规范格式输出程序执行的详细信息,这时我们需要用到日志功能.在Python语言中,有个內建模块logging能够很好的实现日志功能.整体来说,logging配置可 ...
- python接口测试之日志功能
之前在简书中看了一篇关于日志功能的文档,供大家参考:https://www.jianshu.com/p/62f7b49b41e7 Python通过logging模块提供日志功能,所以直接导入即可 im ...
- Python之日志处理(logging模块)
本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...
- Python脚本日志系统
Python通过logging模块提供日志功能,关于logging模块的使用网络上已经有很多详细的资料,这里要分享的是怎样在实际工程中使用日志功能. 假设要开发一个自动化脚本工具,工程结构如下,Com ...
- 【转】Python之日志处理(logging模块)
[转]Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging ...
- Python 配置日志的几种方式
Python配置日志的几种方式 作为开发者,我们可以通过以下3种方式来配置logging: (1)使用Python代码显式的创建loggers,handlers和formatters并分别调用它们的配 ...
随机推荐
- ubuntu安装gcc不同的版本
服务器ubuntu14.04安装ns3.29中,显示gcc版本过低 使用apt-get安装失败,ubuntu14.04默认安装gcc4.8.4,无法下载更高级的gcc版本 先找到资料1,脚本尝试了,下 ...
- 网络编程之tcp协议以及粘包问题
网络编程tcp协议与socket以及单例的补充 一.单例补充 实现单列的几种方式 #方式一:classmethod # class Singleton: # # __instance = None # ...
- 8.1 Spark MLlib简介
一.什么是机器学习 机器学习可以看做是一门人工智能的科学,该领域的主要研究对象是人工智能.机器学习利用数据或以往的经验,以此优化计算机程序的性能标准. 机器学习强调三个关键词:算法.经验.性能 二.基 ...
- 《Web Development with Go》中的html.template
模板应用,深入其它 main.go package main import ( //"encoding/json" "fmt" "log" ...
- github.com/pkg/errors库学习
为了理解go error,进一步学习github.com/pkg/errors作的训练. http://www.shtml.net/article/content/tok/48369/id/37733 ...
- myeclipse使用
安装一个myeclipse10或者2015 2014都可以 支持最高的JDK为7 myeclipse可以永久使用需要激活 有几步骤 myeclipse打开之后--windows--show view ...
- js获取url参数值的方法总结
1.方式一:通过字符串截取的方式获取参数值: 1).函数一:获取URL中的参数名及参数值的集合 /** * [获取URL中的参数名及参数值的集合] * 示例URL:http://htmlJsTest/ ...
- path()函数
path()函数具有以下四个参数 route 必须 view 必须 kwargs 可选 name 可选 route route是一个匹配URL的准则(类似正则表达式) 当Django响应一个请求时,它 ...
- IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素
从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...
- 使用openpyxl模块进行封装,高效处理excel测试数据
from openpyxl import load_workbook from scripts.handle_config import conf from scripts.constants imp ...