python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己的python应用。

python使用logging模块记录日志涉及四个主要的类:

logger:提供了应用程序可以直接使用的接口;

handler:将(logger创建的)日志记录发送到合适的目的地。

filter:提供一种优雅地方式决定一个日志记录是否发送到handler。

formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。

logging.getLogger([name]):返回一个logger对象,如果没有指定名字将返回root logger。

logging.basicConfig():用默认Formatter为日志系统建立一个StreamHandler,设置基础配置并加到root logger中

日志打印有5中模式:

logging.debug():调试模式,不是必须出现,但是如果有问题需要借助它的信息。

logging.info():信息模式,必须出现但是对程序的正常运行没有影响。

logging.warning():警告模式,不会造成程序的错误,但可能会出问题的时候打印。

logging.erroe():错误模式,程序出错了。

loggingcirtical():批判模式,程序崩溃了。

每个程序在输出信息之前都要获得一个Logger,Logger通常对应了程序的模块名。

LOG = logging.getLogger("chat.gui")

而核心模块可以这样:

LOG = logging.getLogger("chat.kernel")

Logger.setLevel(lel):指定最低的日志级别,低于lel的级别将会被忽略。debug是最低的内置级别,critical为最高。

Logger.addFilter(filt)、Logger.removeFilter(filt):添加或删除指定的filter.

Logger.addHandler(hdr)、Logger.removeHandler(hdr):增加或删除指定的handler

不同模式的运行级别:

>>> importlogging>>>logging.NOTSET

0>>>logging.DEBUG10

>>>logging.INFO20

>>>logging.WARNING30

>>>logging.ERROR40

>>>logging.CRITICAL50

NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

如果把looger的级别设置为INFO,那么小于INFO级别的日志不输出,大于等于INFO级别的日志都输出。

handler对象负责发送相关的信息到指定目的地。python的日志系统有多种Handler可以使用。有些Handler可以把信息输出到控制台,有些logger可以把信息输出到文件,还有些Handler可以把信息发送到网上,如果觉得不够用,还可以编写自己的Handler可以通过addHandler()方式添加多个handler

Handler.setLevel(lel):指定被处理的信息级别,低于lel级别的信息将被忽略。

Handler.setFormatter():给这个handler选择一个格式

Handler.addFilter(filt)、Handler.removeFilter:新增或删除一个filter对象。

每个Logger可以附加多个Handler,下面是几个常见的:

(1)logging.StreamHander:屏幕流对象

(2)logging.Filehandler:用于向一个文件输出日志信息

Formatters

Formatter对于设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S

importlogging

LOG=logging.getLogger() #获取一个实例

sh = logging.StreamHandler() #得到一个屏幕流发送台

LOG.addHandler(sh)#作用台关联到实例

LOG.warning('logger warning message')#调用实例答应信息

LOG.error('logger error message')#没有格式化,只有最原始的输出到屏幕

结果:

logger warning message #输出到屏幕

logger error message

下面只单纯输出到文件:

importlogging

LOG=logging.getLogger() #获取一个实例

console= logging.FileHandler('test.log') #控制台

formatter= logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

LOG.addHandler(console)

console.setFormatter(formatter) #绑定格式

LOG.warning('logger warning message')

LOG.error('logger error message')

结果:

2017-11-23 20:46:49,396 - root - WARNING -logger warning message2017-11-23 20:46:49,396 - root - ERROR - logger error message

综合实例:

importlogging

logger=logging.getLogger() #实例化一个logger对象#创建一个handler,用于写入日志文件

fh = logging.FileHandler('test.log') #将相关信息发送到目的地#再创建一个handler,用于输出到控制台

ch =logging.StreamHandler()

#指定文件,可以不指定

formatter= logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

fh.setFormatter(formatter)#文件句柄 绑 格式,

ch.setFormatter(formatter)

logger.setLevel(logging.INFO) 设置文件的级别,默认VWARNING

logger.addHandler(fh)#logger对象可以添加多个fh和ch对象(logger绑文件句柄)

logger.addHandler(ch)

logger.debug('logger debug message') #输出

logger.info('logger info message')

logger.warning('logger warning message')

logger.error('logger error message')

logger.critical('logger critical message')

python loggeru模块_python常用模块——logger模块相关推荐

  1. Python学习笔记:常用内建模块6 (urllib)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  2. Python学习笔记:常用内建模块4:hmac

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  3. Python学习笔记:常用内建模块3:struct

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. python必学的模块_Python常用的模块

    模块和包 1.1模块介绍模块定义:一系列功能的集合体 模块使用: import导入模块 或者 from ... import... 导入模块 模块分类:内置模块 自定义模块 第三方模块 模块加载顺序: ...

  5. python dcf估值_Python 常用模块

    本节内容 模块介绍 os 模块 sys 模块 time & datetime模块 random 模块 json & picle shutil 模块 shelve 模块 xml 模块 c ...

  6. python日历函数_Python—日历函数—日历模块的常用函数,calendar,常见

    Python-日历函数-日历模块的常用函数,calendar,常见 发表时间:2020-07-07 日历函数 calendar模块中提供了非常多的函数来处理年历和日历. 例如:打印2020年7月份的日 ...

  7. python有哪几种模块_python常用模块有哪些?

    本文和大家分享的主要是python中常用几大模块相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.时间模块(time) 在学习模块之前我们所接触的时间模块 import time ti ...

  8. python常用运维模块_python常用模块之一

    sys模块: sys模块是提供关于python本身的详细内在的信息的模块. sys.executable变量,它包含python解释器的路径 sys.platform变量,告诉我们现在处于什么操作系统 ...

  9. python画图的模块_python强大的绘图模块matplotlib示例讲解

    Matplotlib 是 Python 的绘图库.作为程序员,经常需要进行绘图,在我自己的工作中,如果需要绘图,一般都是将数据导入到excel中,然后通过excel生成图表,这样操作起来还是比较繁琐的 ...

  10. Python学习笔记:常用内建模块1

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 让nginx支持php和path_info(新版本)
  2. wfs.js 多路视频 串屏 闪烁
  3. rpc核心实现和原理
  4. Java IO(二)——RandomAccessFile
  5. 和硕裁员4.5万真相调查:工人入不敷出无奈走人
  6. Jquery打叉怎么办
  7. [转]Messenger:使用消息的跨进程通信
  8. 家的N次方 经典台词
  9. MySQL带参数的存储过程小例子
  10. AlphaGo实力远超对手
  11. 曲折中前行的汉语编程
  12. 将中文姓名转为拼音英文名的一种实现
  13. 从appfuse开始学习Spring和Hibernate - (1)构建项目
  14. 有谁知道千千静听中的波形特效是怎么做的?
  15. 自适应滤波器 | 时域ALE算法
  16. 大部分Python库
  17. css中repeat用法,CSS background-repeat用法及代码示例
  18. 功能测试是什么?性能测试是什么?两者有什么区别?
  19. The 2020 ICPC Asia Macau Regional Contest
  20. 2012春节回乡见闻

热门文章

  1. phpmemcache
  2. c语言数组前缀和,关于最大子数组问题
  3. 华中数控机器人编程循环三次_华中数控:公司在数控技术上不断创新突破 在技术方面处于国内领先水平...
  4. oracle创建联机重做日志,oracle联机重做日志文件管理!
  5. vue 进入首页只弹一个弹框_vue.js实现只弹一次弹框
  6. 设计师交流分享社区|灵感并非凭空得来,积累在集设网
  7. 高质量的设计素材,有效提高工作效率
  8. 圣诞节美食聚会派对海报设计
  9. 免责协议怎么写_员工辞职时,HR得让他这样写离职申请!
  10. Mac精品软件分享第一期