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制作微信好友背景墙教程(附完整代码)
Jul 17 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
python3 使用traceback定位异常实例
Mar 09 Python
python对XML文件的操作实现代码
Mar 27 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
python实现简单遗传算法
Sep 18 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 Python
使用pandas模块实现数据的标准化操作
May 14 Python
python内置进制转换函数的操作
Jun 02 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 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作的文本留言本的例子(一)
2006/10/09 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php异常处理方法实例汇总
2015/06/24 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
使用Python获取Linux系统的各种信息
2014/07/10 Python
更改Python命令行交互提示符的方法
2015/01/14 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
用Python配平化学方程式的方法
2019/07/20 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
如何理解Python中的变量
2020/06/01 Python
python os.rename实例用法详解
2020/12/06 Python
请假条怎么写
2014/04/10 职场文书
区级文明单位申报材料
2014/05/15 职场文书
电影建国大业观后感
2015/06/01 职场文书
单位工资证明范本
2015/06/12 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS