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模块知识点及应用小结的更多相关文章

  1. python学习之老男孩python全栈第九期_day029知识点总结——configparser模快、logging模块

    一. configparser模块 生成文档 import configparser config = configparser.ConfigParser() config[', 'Compressi ...

  2. logging模块培训小结

    Python自动化课程又上了一节课,每一个自动化框架都涉及到日志的使用,logging模块是Python的一个标准库模块,由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日 ...

  3. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  4. 以打印日志为荣之logging模块详细使用

    啄木鸟社区里的Pythonic八荣八耻有一条: 以打印日志为荣 , 以单步跟踪为耻; 很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python ...

  5. logging模块、sys模块、shelve模块

    一.logging模块 1.logging模块就是用于记录日志的,日志就是记录某个时间点,发生的事情. 2.记录日志是为了日后来复查,提取有用的信息. 3.如何去记录日志:可以直接打开文件,记录信息, ...

  6. shelve模块,sys模块,logging模块

    1.shelve模块 用于序列化的模块,shelve模块比pickle模块简单,只有open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型. impor ...

  7. python logging 模块的应用

    对一名开发者来说最糟糕的情况,莫过于要弄清楚一个不熟悉的应用为何不工作.有时候,你甚至不知道系统运行,是否跟原始设计一致. 在线运行的应用就是黑盒子,需要被跟踪监控.最简单也最重要的方式就是记录日志. ...

  8. day18 logging模块 sys shelve

    昨日回顾 re 正则表达式 匹配字符串 场景 例如:爬虫,密码规则验证,邮箱地址验证,手机号码 学习re主要学习的就是 那一堆特殊符号 hashlib hash是一种算法 lib表示库 该模块包含了一 ...

  9. Python入门之Python中的logging模块

    基本用法 下面的代码展示了logging最基本的用法. import logging import sys # 获取logger实例,如果参数为空则返回root logger logger = log ...

随机推荐

  1. spring mvc发送请求404,不能进入处理方法,也不报错

    找了很久找不到原因,那多半是字段绑定出错了.如字段不能为空的如int,double,没传给了空:字段是int的,给了double形式的值(1.0)..这些都会使spring mvc自动绑定出错,而且不 ...

  2. gxx -L和/etc/ld.so.conf的理解

    编程之路刚刚开始,错误难免,希望大家能够指出. 今天编了个动态库,然后自己测试了一下. 忘记设置程序运行时系统搜索库的路径发生错误: 忘记设置程序编译的时候 -L 指定路径报的错误: -L : 告诉程 ...

  3. 小D课堂【SpringBoot】接口Http协议开发实战

    ---恢复内容开始--- ====================2.SpringBoot接口Http协议开发实战 ============================= 1.SpringBoot ...

  4. auto sudo password in shell

    here is the example how to implement the auto password in shell script. Echo yourpasswordhere | sudo ...

  5. RTSP为什么VLC播放器无法播放

    rtsp_tracepoint: rtspservice.c,RTSP_state_machine, state_machine:current state is ready state curren ...

  6. 浅析 阿里 OceanBase 双十一 淘宝天猫 天量交易 承载能力 原理

    我们先看看 这 2 篇文章: <秘诀!支付宝支撑双十一4200万次/秒的数据库请求峰值的技术实现>  https://mp.weixin.qq.com/s?__biz=MzI3MzEzMD ...

  7. python 通过pymongo操作mongoDB执行sort

    在mongo shell 中对数据进行排序操作的时候 db.getCollection('ANJUKE_PRICE').find({},{'id':1,'_id':0}).sort({'id':1}) ...

  8. mysql 主从复制--启动操作start slave, stop slave

    在MySQL配置主从关系时,会用到start slave, stop slave命令,本文简单介绍两个命令的使用方法和作用. start slave mysql> start slave 不带任 ...

  9. Sqoop 介绍、安装及环境配置

    一.Sqoop Sqoop介绍 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.oracle...)间进行数据的传递,可以将一个关系型数据库中的数据导进到Ha ...

  10. RedHat7.3安装MySQL5.7

    1.下载Mysql安装包 https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.20-1.el6.x86_64.rpm-bundle.tar 附百度 ...