一. logging 的使用
日志是我们排查问题的关键利器,写好日志记录,当我们发生问题时,可以快速定位代码范围进行修改。python有给我们开发者提供好的日志模块,下面我们就来介绍一下logging模块:
 
import logging
 
#从上往下,日志级别逐渐升高
logging.debug('this is debug message')
logging.info('this is info message')
logging.warning('this is warning message')
logging.error('this is error message')
logging.critical('this is critical message')
 
>>>
WARNING:root:this is warning message
ERROR:root:this is error message
CRITICAL:root:this is critical message
 
debug:详细的信息,通常只出现在诊断问题上。
info:确认一切按预期运行
warning:一个警告,可能会有一些意想不到的事情发生了,或表明一些问题在不久的将来(例如,磁盘空间低)。这个软件还能按预期工作。
error:一个更严重的问题,软件没能执行一些功能
critical:一个严重的错误,这表明程序本身可能无法继续运行
 
默认logging的日志级别为info,一般基本上所有程序都是这个级别,有助于我们排查问题,但是当发生问题,我们没法定位问题,很多情况下我们需要把日志级别提升到debug级别,那又怎么办呢?
 
二. 通过logging.basicConfig 函数对日志的输出格式及方式做相关配置。现实工作中,往往我们是要把日志写在日志文件中的,那怎么样做呢?看如下代码:
 
#通过logging.basicConfig 函数 把日志写在文件中
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'
                    ,datefmt=' %Y/%m/%d %H:%M:%S', filename='lzc.log', filemode='w+')
logging.debug('this is debug message')
logging.info('this is info message')
logging.warning('this is warning message')
logging.error('this is error message')
logging.critical('this is critical message')
 
打开生成的日志文件 lzc.log
2017/11/10 04:34:10 logging ��־.py[line:23] DEBUG this is debug message
2017/11/10 04:34:10 logging ��־.py[line:24] INFO this is info message
2017/11/10 04:34:10 logging ��־.py[line:25] WARNING this is warning message
2017/11/10 04:34:10 logging ��־.py[line:26] ERROR this is error message
2017/11/10 04:34:10 logging ��־.py[line:27] CRITICAL this is critical message
 
 
 
 
三。主要是通过logging.basicConfig 函数进行操作,现在我们来介绍该函数参数的用法:
level :设置日志级别,默认为logging.WARNING
filename:指定日志文件名
filemode:和file函数意义相同,指定日志文件的打开模式,'w'或'a'
format:指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
        %(levelname)s:打印日志级别名称
        %(filename)s:打印当前执行程序名
         %(funcName)s:打印日志的当前函数
         %(lineno)d:打印日志的当前行号
         %(asctime)s:打印日志的时间
         %(thread)d:打印线程ID
         %(message)s:打印日志信息
         datefmt:指定时间格式,同time.strftime()
         stream:指定将日志的输出流,可以指定输出到 sys.stderr,sys.stdout 或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
          logging.getLogger([name]):创建一个日志对象:
 
返回一个logger实例,如果没有指定name,返回root logger。只要name相同,返回的logger 实例都是同一个而且只有一个,即name和logger 实例是一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能得到同一个logger实例。
logging.getLogger(__name__) 在上述实例中__name__就指的是__main__.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

phthon 基础 7.3 logging 日志模块的更多相关文章

  1. Python logging(日志)模块

    python日志模块 内容简介 1.日志相关概念 2.logging模块简介 3.logging模块函数使用 4.logging模块日志流处理流程 5.logging模块组件使用 6.logging配 ...

  2. pyhton——logging日志模块的学习

    https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模 ...

  3. logging 日志模块学习

    logging 日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪,所以还是灰常重要滴,下面我就来从入门到放弃的系统学习一下日志既可以在屏幕上显示,又可以在文件中体现. ...

  4. logging日志模块

    为什么要做日志: 审计跟踪:但错误发生时,你需要清除知道该如何处理,通过对日志跟踪,你可以获取该错误发生的具体环境,你需要确切知道什么是什么引起该错误,什么对该错误不会造成影响. 跟踪应用的警告和错误 ...

  5. python 自动化之路 logging日志模块

    logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方http://blog.csdn.net/zyz511 ...

  6. day31 logging 日志模块

    # logging 日志模块 ****** # 记录用户行为或者代码执行过程 # print 来回注释比较麻烦的 # logging # 我能够“一键”控制 # 排错的时候需要打印很多细节来帮助我排错 ...

  7. logging日志模块的使用

    logging日志模块的使用 logging模块中有5个日志级别: debug 10 info 20 warning 30 error 40 critical 50 通常使用日志模块,是用字典进行配置 ...

  8. Python入门之logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...

  9. Python 中 logging 日志模块在多进程环境下的使用

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python 中 logging 日志模块在多进程环境下的使用 使用 Pytho ...

随机推荐

  1. javascript 表格隔行换色

    用到的知识点: 获取表格元素 tbody 和 rows都是有索引的 这里我们只有一组tbody所以 索引是0 偶数行 索引取余2为0 奇数行 索引取余2不为0 通过 遍历行索引设置相应的颜色. < ...

  2. hdu3715 2-sat+二分

    Go Deeper 题意:确定一个0/1数组(size:n)使得满足最多的条件数.条件在数组a,b,c给出. 吐槽:哎,一水提,还搞了很久!关键是抽象出题目模型(如上的一句话).以后做二sat:有哪些 ...

  3. failed to obtain a cell from its dataSource 问题处理

    最近在处理bugly问题的时候,总会看到回话列表有奔溃,但是由于没有啥具体的细节原因也无从下手. 只知道ConversationListViewController这个类的奔溃,报的问题是这个,也只有 ...

  4. 003为什么shell的配置文件那么繁琐?

    Bash的设置之所以如此繁琐,是由于历史原因造成的.早期的时候,计算机运行速度很慢,载入配置文件需要很长时间,Bash的作者只好把配置文件分成了几个部分,阶段性载入. 系统的通用设置放在 /etc/p ...

  5. ansible 手册

    ansible 官方文档:https://docs.ansible.com/ansible/latest/index.html ansible 中文入门:http://getansible.com/ ...

  6. Web自动化测试框架改进

    Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 一.适用范围:传统Web功能自动化测试.H5功能自动化测试 ...

  7. linux暴力密码破解工具hydra安装与使用

    说明:hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码.官网:http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco ...

  8. &lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第04章 | 字典

    第04章:字典 当索引不好用时 Python唯一的内建的映射类型,无序,但都存储在一个特定的键中.键能够使字符.数字.或者是元祖. ------ 字典使用: 表征游戏棋盘的状态,每一个键都是由坐标值组 ...

  9. 手机话费充值和手机流量充值 API

    最近正好需要用到手机充值和流量充值接口,网上找到的,记录并分享下. 聚合数据上面有手机充值的接口,也有流量充值的接口:注册以后可以使用它的OpenId和AppKey. 手机话费充值的接口:https: ...

  10. 出现“Windows资源管理器已停止工作”错误

    出现"Windows资源管理器已停止工作"错误 什么是资源管理器呢,explorer.exe进程的作用就是让我们管理计算机中的资源! 今天开电脑的时候就一直提示windows资源管 ...