logging模块知识点及应用小结
Logging模块知识点:
一.分为5个级别:debug(),info(),warning(),error(),critical()。级别由低到高
1.1最简单的用法:

1.2 如果想把日志写到文件里:logging.basicConfig()方法

whw.log文件里的内容为:

注意后面那句level=’logging.INFO’的意思是把日志的记录级别设置为INFO,也就是说,只有日志是INFO或者比INFO级别高的日志才会被记录到文件里面。如上面的例子中debug的级别低于info所以whw.log日志文件里不会记录logging.debug()方法中的信息。如果希望记录debug的日志,只要将级别设置为DEBUG就可以了。
注意如果不设置日志级别,那么默认的日志级别是warning。
二.自定义日志格式
1.日志中增加时间信息:

whw.log文件中的内容为:(运行2次的结果)

除了加时间还可以定义一大堆格式,如下表所示:

三.日志同时输出到屏幕和文件
1.python使用logging模块记录日志涉及4个主要的类:
(1)logger:提供了应用程序可以直接使用的接口;
(2)handler:将(logger创建的)日志记录发送到合适的目的输出;
(3)filter:提供了细度设备来决定输出那条日志记录;(用的不多)
(4)formatter:决定日志记录的最终输出格式。
例一:同时输出到文件与屏幕(含filter过滤)
import logging class IgnoreBackupLogFilter(logging.Filter):
"""忽略带db backup 的日志"""
def filter(self, record): #固定写法
return "db backup" not in record.getMessage()
#1.生成logger对象#############################################
whw_logger = logging.getLogger('whw_web')
#设置日志级别(这里是全局的)全局的默认级别为warning
whw_logger.setLevel(logging.DEBUG)
#1.1 把filter对象添加到logger中就可以支持过滤
whw_logger.addFilter(IgnoreBackupLogFilter())
#注意,如果全局设置为DEBUG,console handler设置为INFO,如果输出日志级别为debug,那就不会在日志中打印
#全局先过滤一遍
#2.生成handler对象##############################################
whw_co = logging.StreamHandler()#屏幕~~~
#可以在handler中设置级别:控制屏幕的不同的日志级别与输出
whw_co.setLevel(logging.WARNING)
whw_fh = logging.FileHandler('whw_web.log')#文件~~~
#可以在handler中设置级别:控制文件的不同的日志级别与输出
whw_fh.setLevel(logging.ERROR)
#2.1 把handler对象绑定到logger对象中
whw_logger.addHandler(whw_co)
whw_logger.addHandler(whw_fh)
#3.生成formatter对象############################################
#文件
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#屏幕
console_formatter = logging.Formatter('%(asctime)s - %(name)s -%(lineno)s- %(levelname)s - %(message)s')
#3.1 把formatter对象绑定到handler对象中
#屏幕+文件
whw_co.setFormatter(console_formatter)
whw_fh.setFormatter(file_formatter) #########输出日志#################################################
whw_logger.debug('whwhwhwhwh,db backup')
whw_logger.info('whwhwhwhwh,db backup')
whw_logger.warning('whwhwhwhwh,db backup')
whw_logger.error('whwhwhwhwh')
例一的输出结果为:


例二:日志的自动截断
import logging
from logging import handlers whw_logger = logging.getLogger(__name__) log_file = "whw_log.log" fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3)
#也可:fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3) formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s') fh.setFormatter(formatter) whw_logger.addHandler(fh) whw_logger.warning('whehejwwj')
whw_logger.warning('kjdswewi')
whw_logger.error('wwhwwl')
例二的运行结果如下:

logging模块知识点及应用小结的更多相关文章
- python学习之老男孩python全栈第九期_day029知识点总结——configparser模快、logging模块
一. configparser模块 生成文档 import configparser config = configparser.ConfigParser() config[', 'Compressi ...
- logging模块培训小结
Python自动化课程又上了一节课,每一个自动化框架都涉及到日志的使用,logging模块是Python的一个标准库模块,由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日 ...
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- 以打印日志为荣之logging模块详细使用
啄木鸟社区里的Pythonic八荣八耻有一条: 以打印日志为荣 , 以单步跟踪为耻; 很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python ...
- logging模块、sys模块、shelve模块
一.logging模块 1.logging模块就是用于记录日志的,日志就是记录某个时间点,发生的事情. 2.记录日志是为了日后来复查,提取有用的信息. 3.如何去记录日志:可以直接打开文件,记录信息, ...
- shelve模块,sys模块,logging模块
1.shelve模块 用于序列化的模块,shelve模块比pickle模块简单,只有open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型. impor ...
- python logging 模块的应用
对一名开发者来说最糟糕的情况,莫过于要弄清楚一个不熟悉的应用为何不工作.有时候,你甚至不知道系统运行,是否跟原始设计一致. 在线运行的应用就是黑盒子,需要被跟踪监控.最简单也最重要的方式就是记录日志. ...
- day18 logging模块 sys shelve
昨日回顾 re 正则表达式 匹配字符串 场景 例如:爬虫,密码规则验证,邮箱地址验证,手机号码 学习re主要学习的就是 那一堆特殊符号 hashlib hash是一种算法 lib表示库 该模块包含了一 ...
- Python入门之Python中的logging模块
基本用法 下面的代码展示了logging最基本的用法. import logging import sys # 获取logger实例,如果参数为空则返回root logger logger = log ...
随机推荐
- Go Example--接口
package main import ( "math" "fmt" ) type geometry interface { area() float64 pe ...
- dup等复制文件描述符函数
[root@bogon code]# cat b.c #include<stdio.h> #include<error.h> #include<unistd.h> ...
- 不用修改 hosts 本地开发(续篇)
上一篇说过不修改 hosts 在 Chrome 中可以使用 *.localhost 进行绑定域名开发. 但只能用于 Chrome 中,今天找了一个还有一些好心人提供了域名指向 127.0.0.1 . ...
- python之路---04 列表 元组
十七 .列表 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 1.列表存在索引和切片. 和字符串是一样的. 2.增删改查操作 1).增加 1. .append(&quo ...
- 20165308 实验二 Java面向对象程序设计
20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 ...
- Meandering Through the Maze of MFC Message and Command Routing MFC消息路由机制分析
Meandering Through the Maze of MFC Message and Command Routing Paul DiLascia Paul DiLascia is a free ...
- 关于Adaboost算法
我花了将近一周的时间,才算搞懂了adaboost的原理.这根骨头终究还是被我啃下来了. Adaboost是boosting系的解决方案,类似的是bagging系,bagging系是另外一个话题,还没有 ...
- 最全Pycharm教程(1)——定制外观
http://blog.csdn.net/u013088062/article/details/50100121
- 使用JMeter进行RESTful API测试
使用JMeter进行RESTful API测试 在哪里设置实现最优脚本重用的属性 由于支持云的应用程序通常可以轻松.快速地进行复制和部署,所以可以在多种环境中对其进行测试.如果您需要在多个环境中测试和 ...
- itertools.groupby()/itertools.compress() 笔记
关于itertools.groupby() itertools.groupby()就是将相邻的并且相同的键值划分为同一组,相似功能可以看https://docs.python.org/3/librar ...