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 03 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
简介Django框架中可使用的各类缓存
Jul 23 Python
Python操作Word批量生成文章的方法
Jul 28 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python Django Cookie 简单用法解析
Aug 13 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
python基于opencv批量生成验证码的示例
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
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
python文件选择对话框的操作方法
2019/06/27 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
Python request中文乱码问题解决方案
2020/09/17 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
出纳岗位职责范本
2013/12/01 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python