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

不同模式的运行级别:

>>> import logging
>>> logging.NOTSET
0
>>> logging.DEBUG
10
>>> logging.INFO
20
>>> logging.WARNING
30
>>> logging.ERROR
40
>>> logging.CRITICAL
50

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

import logging
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

下面只单纯输出到文件:

import logging
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 message
2017-11-23 20:46:49,396 - root - ERROR - logger error message

综合实例:

import logging

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常用模块——logger模块的更多相关文章

  1. Python常用内建模块

    Python常用内建模块 datetime 处理日期和时间的标准库. 注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import da ...

  2. python中的logger模块

    logger 提供了应用程序可以直接使用的接口handler将(logger创建的)日志记录发送到合适的目的输出filter提供了细度设备来决定输出哪条日志记录formatter决定日志记录的最终输出 ...

  3. python常用内建模块 collections,bs64,struct,hashlib,itertools,contextlib,xml

    #  2  collections 是Python内建的一个集合模块,提供了许多有用的集合类. # 2.1 namedtuple #tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: p ...

  4. Python 常用内建模块(time ,datetime)

    1,在Python中,与时间处理有关的模块就包括:time,datetime以及calendar. 2,在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(st ...

  5. python基础知识~logger模块

    一 配置文件模块 import logging ->导入模块 logger = logging.getLogger('mylogger') ->初始化类二 创建句柄 1 文件句柄 fh = ...

  6. python常用命令—查看模块所在位置

    环境:ipython3 交互式解释器 语法: import 模块名 模块名.__file__ 功能: 查看模块的所在位置 例:

  7. python常用函数及模块

    原文来源于博客园和CSDN 1.计算函数 abs()--取绝对值 max()--取序列最大值,包括列表.元组 min()--取序列最小值 len()--取长度 divmod(a,b)---取a//b除 ...

  8. python中的logger模块详细讲解

    logger 提供了应用程序可以直接使用的接口handler将(logger创建的)日志记录发送到合适的目的输出filter提供了细度设备来决定输出哪条日志记录formatter决定日志记录的最终输出 ...

  9. Python 常用内建模块(os, sys,random)

    一.os 模块 1,操作系统与环境变量 import osprint(os.name) #操作系统类型,如果是posix 说明系统是linux unix 或 mac os x :如果是nt 就是win ...

随机推荐

  1. Android 第三方应用广告拦截实现

    前段时间,公司制造的机器里应用装有不良广告,严重影响了儿童客户使用者的思想健康.导致被人投诉. 于是乎.就有了想研发一款相似于360广告屏蔽的应用的念头.嗯.事情就是这样.如今切入主题. 眼下市场上有 ...

  2. python3 读取csv的常用语法

    import csv #打开文件,用with打开可以不用去特意关闭file了,python3不支持file()打开文件,只能用open() with open("info.csv" ...

  3. 转:C++ 关键字 inline详细介绍

    1.  内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: int max(int a, int b) { return a > b ? a : b; } 为这么一个小的操作定义一个 ...

  4. 分布式服务框架 Zookeeper(二)官方介绍

    ZooKeeper:为分布式应用而生的分布式协调服务 ZooKeeper是一个为分布式应用而设计的分布式的.开源的协调服务.它提供了一套简单的原语,分布式应用利用这套原语可以实现更高层的服务,比如一致 ...

  5. Java并发编程(十二)线程安全性的委托

    在组合对象中如果每个组件都已经是线程安全的,是否需要再加一个额外的"线程安全层",需要视情况而定. final可以修饰未复制的属性,只要在静态代码块或者构造函数中赋值了即可. 独立 ...

  6. UTF-8和GBK的区别

    GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准).GBK编码专门用来解决中文编码的,是双字节的.不论中英文都是双字节的. UTF-8编码是用以解决国际上字符的一种 ...

  7. vSphere共享存储全配置流程

    1.Openfiler的安装 Openfiler 由rPath Linux驱动,它是一个基于浏览器的免费网络存储管理实用程序,可以在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域 ...

  8. python 案例:使用BeautifuSoup4的爬虫

    我们以腾讯社招页面来做演示:http://hr.tencent.com/position.php?&start=10#a 使用BeautifuSoup4解析器,将招聘网页上的职位名称.职位类别 ...

  9. 第0周---python网络爬虫前奏

    目标:掌握定向网络数据爬取和网页解析的基本能力 Python开发工具的选择

  10. Linux重启与关机命令

    重启命令 reboot shutdown -r now 立即重启 shutdown -r 10   十分钟后重启 shutdown -r 17:00 在17:00重启 关机命令 halt 立即关机 p ...