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使用MySQLdb访问mysql数据库的方法
Aug 03 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
详谈在flask中使用jsonify和json.dumps的区别
Mar 26 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
Python解决走迷宫问题算法示例
Jul 27 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
python列表返回重复数据的下标
Feb 10 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
手把手教你将Flask应用封装成Docker服务的实现
Aug 19 Python
python pymysql库的常用操作
Oct 16 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 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 extract 将数组拆分成多个变量的函数
2010/06/30 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
javascript下function声明一些小结
2007/12/28 Javascript
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
python实现数通设备端口监控示例
2014/04/02 Python
Python字符串处理函数简明总结
2015/04/13 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
python线程里哪种模块比较适合
2020/08/02 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
mysql有关权限的表都有哪几个
2015/04/22 面试题
初二生物教学反思
2014/02/03 职场文书
电气工程自动化求职信
2014/03/14 职场文书
研究生导师推荐信
2014/09/06 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
紧急通知
2015/04/17 职场文书
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers