python  logging日志打印过程解析


Posted in Python onOctober 22, 2019

一、 基础使用

1.1 logging使用场景

日志是什么?这个不用多解释。百分之九十的程序都需要提供日志功能。Python内置的logging模块,为我们提供了现成的高效好用的日志解决方案。但是,不是所有的场景都需要使用logging模块,下面是Python官方推荐的使用方法:

任务场景 最佳工具
普通情况下,在控制台显示输出 print()
报告正常程序操作过程中发生的事件 logging.info()(或者更详细的logging.debug())
发出有关特定事件的警告 warnings.warn()或者logging.warning()
报告错误 弹出异常
在不引发异常的情况下报告错误 logging.error(), logging.exception()或者logging.critical()

logging模块定义了下表所示的日志级别,按事件严重程度由低到高排列(注意是全部大写!因为它们是常量。):

级别 级别数值 使用时机
DEBUG 10 详细信息,常用于调试。
INFO 20 程序正常运行过程中产生的一些信息。
WARNING 30 警告用户,虽然程序还在正常工作,但有可能发生错误。
ERROR 40 由于更严重的问题,程序已不能执行一些功能了。
CRITICAL 50 严重错误,程序已不能继续运行。

默认级别是WARNING,表示只有WARING和比WARNING更严重的事件才会被记录到日志内,低级别的信息会被忽略。因此,默认情况下,DEBUG和INFO会被忽略,WARING、ERROR和CRITICAL会被记录。

有多种方法用来处理被跟踪的事件。最简单的方法就是把它们打印到终端控制台上。或者将它们写入一个磁盘文件内。

1.2 简单范例

在什么都不配置和设定的情况下,logging会简单地将日志打印在显示器上,如下例所示:

import logging
logging.warning('Watch out!') # 消息会被打印到控制台上
logging.info('I told you so') # 这行不会被打印,因为级别低于默认级别

如果,将上面的代码放在一个脚本里并运行,结果是:

WARNING:root:Watch out!

1.3 高级使用

import logging

#创建logger记录器
logging.basicConfig(filename='example.log',level=logging.DEBUG)
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)

#创建一个控制台处理器,并将日志级别设置为debug

ch = logging.StreamHandler()

ch.setLevel(logging.DEBUG)

#创建formatter格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

#将formatter 添加到ch处理器
ch.setFormatter(formatter)

#将ch添加到logger
logger.addHandler(ch)

#然后就可以开始使用了
# logger.debug('debug message')
#logger.info('info message')
# logger.warning('warn message')
# logger.error('error message')
# logger.critical('critical message')

def Logss():
  #要打印的信息
  a = "3"
  logger.info(a)

Logss()

python  logging日志打印过程解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
天翼开放平台免费短信验证码接口使用实例
Dec 18 Python
Python的垃圾回收机制深入分析
Jul 16 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
简单的python协同过滤程序实例代码
Jan 31 Python
python通过elixir包操作mysql数据库实例代码
Jan 31 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
详解python数据结构和算法
Apr 18 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
python time.strptime格式化实例详解
Feb 03 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
安装2019Pycharm最新版本的教程详解
Oct 22 #Python
Python列表list常用内建函数实例小结
Oct 22 #Python
Python爬虫使用浏览器cookies:browsercookie过程解析
Oct 22 #Python
Python异常模块traceback用法实例分析
Oct 22 #Python
Python多线程爬取豆瓣影评API接口
Oct 22 #Python
Python Process多进程实现过程
Oct 22 #Python
详解python中eval函数的作用
Oct 22 #Python
You might like
基于mysql的论坛(7)
2006/10/09 PHP
PHP的博客ping服务代码
2012/02/04 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
解析yii数据库的增删查改
2013/06/20 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
JS随机数产生代码分享
2018/02/24 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
pyramid配置session的方法教程
2013/11/27 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
校运动会广播稿300字
2014/10/07 职场文书
简易版租房协议书范本
2014/10/13 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python
python 闭包函数详细介绍
2022/04/19 Python