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中使用判断语句和循环的教程
Apr 25 Python
详解使用 pyenv 管理多个版本 python 环境
Oct 19 Python
python实现堆和索引堆的代码示例
Mar 19 Python
Python中一些不为人知的基础技巧总结
May 19 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python求离散序列导数的示例
Jul 10 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
Python中的Cookie模块如何使用
Jun 04 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
Python之qq自动发消息的示例代码
Feb 18 Python
Python简易开发之制作计算器
Apr 28 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实现的在线人员函数库
2008/04/09 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
js获取单选按钮的数据
2006/11/27 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
python基础教程之对象和类的实际运用
2014/08/29 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
深入了解python列表(LIST)
2020/06/08 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
会计电算化专业应届大学生求职信
2013/10/22 职场文书
银行职业规划书范文
2013/12/28 职场文书
教师申诉制度
2014/01/29 职场文书
安全宣传标语口号
2014/06/06 职场文书
社区班子对照检查材料
2014/08/27 职场文书
员工自我评价范文
2015/03/11 职场文书
政审证明材料
2015/06/19 职场文书