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 相关文章推荐
python网络爬虫采集联想词示例
Feb 11 Python
python访问系统环境变量的方法
Apr 29 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
Django csrf 验证问题的实现
Oct 09 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
Django 框架模型操作入门教程
Nov 05 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
pytorch 自定义参数不更新方式
Jan 06 Python
opencv python图像梯度实例详解
Feb 04 Python
Python *args和**kwargs用法实例解析
Mar 02 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
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
深入PHP许愿墙模块功能分析
2013/06/25 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
js 能实现监听F5页面刷新子iframe 而父页面不刷新的方法
2016/11/09 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
说一说Python logging
2016/04/15 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
使用Python和百度语音识别生成视频字幕的实现
2020/04/09 Python
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
公共艺术专业自荐信
2014/09/01 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
2015入党个人自传范文
2015/06/26 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
导游词之江南周庄
2019/12/06 职场文书
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript