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的日志功能的更多相关文章

  1. 使用python实现日志功能

    Python脚本日志系统   Python通过logging模块提供日志功能,关于logging模块的使用网络上已经有很多详细的资料,这里要分享的是怎样在实际工程中使用日志功能. 假设要开发一个自动化 ...

  2. Atitit php java python nodejs错误日志功能的比较

    Atitit php  java  python  nodejs错误日志功能的比较 1.1. Php方案 自带 1 1.2. Java解决方案 SLF4J 1 1.3. Python解决方案 自带lo ...

  3. 【Python】自己写日志功能

    Python有自带的logging模块,用于日志记录,功能很强大,但不好用,使用挺麻烦的,而且发现了几个bug,调用了一个logger.warning()一次,结果日志文件中出现了n行记录,且逐渐变成 ...

  4. Python日志功能与处理逻辑

    前言 在应用程序执行过程中,我们希望通过规范格式输出程序执行的详细信息,这时我们需要用到日志功能.在Python语言中,有个內建模块logging能够很好的实现日志功能.整体来说,logging配置可 ...

  5. python接口测试之日志功能

    之前在简书中看了一篇关于日志功能的文档,供大家参考:https://www.jianshu.com/p/62f7b49b41e7 Python通过logging模块提供日志功能,所以直接导入即可 im ...

  6. Python之日志处理(logging模块)

    本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日 ...

  7. Python脚本日志系统

    Python通过logging模块提供日志功能,关于logging模块的使用网络上已经有很多详细的资料,这里要分享的是怎样在实际工程中使用日志功能. 假设要开发一个自动化脚本工具,工程结构如下,Com ...

  8. 【转】Python之日志处理(logging模块)

    [转]Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging ...

  9. Python 配置日志的几种方式

    Python配置日志的几种方式 作为开发者,我们可以通过以下3种方式来配置logging: (1)使用Python代码显式的创建loggers,handlers和formatters并分别调用它们的配 ...

随机推荐

  1. PHP实现支付宝登录

    1.支付宝路由拼接 public function dev() { $http = 'https://openauth.alipaydev.com/oauth2/publicAppAuthorize. ...

  2. Python:有参装饰器与多个装饰器装饰一个函数

    有参装饰器 def timmerout(flag1): #flag1 =flag def timmer(f): def inner(*args,**kwargs): if flag1: start_t ...

  3. itextsharp操作pdf——插入图片、二维码等

    简单介绍 业务需求,需要往pdf图纸上添加二维码功能,将实现过程记录下来 下载类库 直接下载 添加引用 添加命名空间 using System.IO; using iTextSharp.text.pd ...

  4. 如何在父级下访问v-slot的值——vuejs

    关于作用域插槽v-slot的用法可以先看看文档 https://cn.vuejs.org/v2/guide/components-slots.html#%E4%BD%9C%E7%94%A8%E5%9F ...

  5. 阿里云ubuntu 16.04 搭建pptpd 第二版

    前言:1.我常用的服务器在国内,但我又有某方面的需求,所以想要搭建一个pptpd的服务器    2.但我又不常用,所以感觉阿里云包年包月的不划算,所以准备采用阿里云按量付费的实例来搭建pptpd,并形 ...

  6. vue自定义指令笔记

    https://cn.vuejs.org/v2/guide/custom-directive.html 在vue中,有时候我们会把抽象的方法封装为一个自定义指令,多个地方共用 比如:拖拽指令 < ...

  7. poj 3468 A Simple Problem with Integers 线段树 题解《挑战程序设计竞赛》

    地址 http://poj.org/problem?id=3468 线段树模板 要背下此模板 线段树 #include <iostream> #include <vector> ...

  8. nginx学习(二):nginx显示默认首页解析过程

    本篇文章分析下nginx 显示默认首页的过程 如下图所示 查看config文件: # 如果忘记nginx 安装目录.使用下面命令查看 [root@XXX]# whereis nginx nginx: ...

  9. C语言解决汉诺塔问题!

    很难受,看了很多资料才明白..... 对这个问题分析,发现思路如下:有n个黄金盘,要先把n-1个弄到B柱上,再把第n个弄到C柱上,然后把n-1个借助A柱弄到C柱上. 实现的函数如下: void f(i ...

  10. C#开发BIMFACE系列15 服务端API之获取模型的View token

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列3 服务端API之获取应用访问凭证AccessToken>中详细介绍了应用程序访问API的令牌凭证.我 ...