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 ...
随机推荐
- 【Jmeter】分布式并发测试
一.前提: 1.最近在做一下压测,但是单台服务器的CPU,内存可能不够支撑压测的项目,这时候,我们可以使用Jmeter分布式压测. 2.本次使用的环境: 1台服务器做master(调度器) 5台服务器 ...
- nginx 优化(突破十万并发)
一般来说nginx配置文件中对优化比较有作用的为以下几项: worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数. worker_cpu_affinity ...
- Centos7提示swap交换空间不足解决方法
一张图就能解决的问题,就不多bb了
- <--------------------------常用的API方法------------------------------>
//1.int length(): 返回的是字符串的长度 public static void fun1() { String string = "string"; int i = ...
- Generic Realtime Intermediary Protocol
转自:https://pushpin.org/docs/protocols/grip/ Introduction The Generic Realtime Intermediary Protocol ...
- bzoj 2806 [Ctsc2012]Cheat——广义后缀自动机+单调队列优化DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2806 只想着怎么用后缀数据结构做,其实应该考虑结合其他算法. 可以二分那个长度 L .设当前 ...
- C# 构造方法...
Class1.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- 干货-递归下降分析器 笔记(具体看Python Cookbook, 3rd edition 的2.19章节)
import re import collections # 写将要匹配的正则 NUM = r'(?P<NUM>\d+)' PLUS = r'(?P<PLUS>\+)' MIN ...
- slice.indices()/collections.Counter笔记
关于slice.indices() >>> help(slice) Help on class slice in module builtins: class slice(objec ...
- git 查看提交历史
查看提交历史 git log 查看每次提交的具体改动内容 git log -p 查看某个文件历次提交的具体改动内容 git log -p <file name> # git log -p ...