1、logging模块日志级别

使用logging模块简单示例:

>>>import logging
>>>logging.debug("this's a test logging")
>>>loggin.info("still a test logging")
# 默认情况下以上两行没有输出,需要指定日志级别才行
>>>logging.warn("it's waring!!!")

logging模块日志级别:

日志级别
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
UNSET 0

对于某个级别的日志消息,只有当处理器和日志记录器配置为可以发布该级别(或者更高级别的消息时),才会发布这个日志消息。例如,如果一个消息的级别是CRITICAL,日志配置的级别是ERROR,这个消息就会发出(50>40)。如果这个消息是WARNING,而日志记录器设置为的是ERROR,这个消息就不会发出(30<40).

2、logging模块基本理解使用

  • 不同的优先级对应不同的函数:logging.debug,logging.warn等等

  • 一个或多个Logger对象,主要通过它们使用模块

  • 把消息写入终端或文件、数据库或其他地方的handler

  • 创建输出的formatter

  • 基于输入进行筛选的过滤器


一、设置logging日志默认优先级:

默认级别是WARNING,设置日志默认优先级为DEBUG
>>>import logging
>>>logging.basicConfig(level=logging.DEBUG)

二、创建logger对象

每个logger对象都有一个名称,比如创建一个test的logger
>>>import logging
>>>logging.basicConfig(level='DEBUG')
>>>logger = longgin.getLogger('test')
>>>logger.debug('the great gates!')
DEBUG:test:the great gates!

三、使用Handler把消息输出到日志文件

>>>import logging
>>>logging.basicConfig(level='DEBUG', filename='test.log')
>>>logger = logging.getLogger('tx')
>>>logger.war('xxxxssss')
日志写入了文件test.log,调用basicConfig()时使用的filename参数会创建一个FileHandler并对logger进行设置,logging模块至少包含15种handler,比如电子邮件、web服务器、屏幕和文件 

四、控制消息的格式

>>>import logging
>>>fmt = '%(asctime)s %(levelname)s %(lineno)s %(message)s'
>>>logging.basicConfig(lebel='DEBUG', filename='test.log', format=fmt)
>>>logger = logging.getLogger('xx')
>>>logger.warn('where is loggggg')
2016-5-5 23:22:11,877 WARN 1 where is loggggg
logging模块可以识别出fmt格式化字符串中的变量名,asctime、levelname、lineo、message,都是内置变量,也可以创建自定义变量。 

3、日志文件旋转

  • 要想每次运行程序的时候创建一个新文件,可以向basicConfig()的参数filemode传入值"w"。不过最好不要采用这种方式管理日志文件,更好的做法是使用一个RotatingFileHandler,它会自动创建新文件,同时保留原来的文件.

>>>import glob
>>>import logging
>>>import logging.handlers
>>>logger = logging.getLogger('mylogger')
>>>logger.setLevel(logging.DEBUG)
>>>log_filename='test.log'
>>>handler = logging.handlers.RotatingFileHandler(log_filename, maxBytes=100, backupCount=5)
>>>logger.addHandler(handler)
# 查看滚动生成的日志文件
for i in range(100):
logger.debug('i = %d' % i)
# 查看那些文件被创建
logfiles = glob.glob('%s *' % log_filename)
for filename in logfiles:
print filename
结果:
test.log
test.log.1
test.log.2
...
test.log.5
最新的文件总是test.log,每次达到大小限制时,就会后缀加.1重命名。现有的各个备份文件也会重命名,使后缀递增(.1变成.2,等等),.5文件会被删除

 4、logging模块使用问题和实例

1、logging模块中子类继承父类过程中,父类使用logging.basicConfig()进行的配置,会覆盖掉子类中的配置.所以子类中用logging.basicConfig()进行的配置不会生效.

2、另外使用logger=logging.getLogger()进行实例化对象过程中,如果是继承父类的,仍然不会生效,由于logging.getLogger()是以"."作为不同层级的区分.当子类需要另外设置logging的配置时,要另外通过设置handler的方式,来避免父类的logging配置掩盖子类.

3、具体首先配置logger = logging.getLogger(__name__) "__name__"不能为空,为其他的参数也可以,如果为logger=logging.getLogger(),似乎子类配置的logger不会生效.

增加handler:
log_file = './test.log'
fmt = fmt = '%(asctime)s %(filename)s %(funcName)s %(levelname)s Line:%(lineno)s :%(message)s'
logger = logging.getLogger(__name__)
logger.level = logging.DEBUG
handlers = logging.FileHandler(log_file)
formatter = logging.Formatter(fmt)
handlers.formatter = formatter
loggers.addHandler(handlers) 使用logger:
logger.info('it's a test')
4、其logging模块参考文档:
http://python.jobbole.com/84092/  [必看,深入浅出]
http://python.jobbole.com/82221/   [基础全面]
http://python.jobbole.com/81521/   [简单]
http://python.jobbole.com/81666/   [简单]

python日志记录-logging模块的更多相关文章

  1. Python日志输出——logging模块

    Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...

  2. Python的日志记录-logging模块的使用

    一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...

  3. Python日志记录(Logging)

    日志记录跟程序的测试相关,并且在大幅度更改程序内核时很有用,它可以帮助我们找到问题和错误的所在.日志记录基本上就是收集与程序运行有关的数据,这样可以在随后进行检查或者累计数据. 1.简单示例 在Pyt ...

  4. 日志记录——logging模块

    Logging:日志记录是为了跟踪记录软件运行时,发生的事件,包括出错,提示信息等等.log日志级别:日志级别大小关系为:CRITICAL > ERROR > WARNING > I ...

  5. Python之日志处理 logging模块

    Python之日志处理(logging模块)   本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...

  6. Python实战之logging模块使用详解

    用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所 ...

  7. Python中的logging模块就这么用

    Python中的logging模块就这么用 1.日志日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICALDEBUG:详细的信息,通常只出现在诊断问题 ...

  8. 日志(logging模块)

    1. 为什么要使用日志(作用) 在学习过程中,写一个小程序或小demo时,遇到程序出错时,我们一般会将一些信息打印到控制台进行查看,方便排查错误.这种方法在较小的程序中很实用,但是当你的程序变大,或是 ...

  9. Python自建logging模块

    本章将介绍Python内建模块:日志模块,更多内容请从参考:Python学习指南 简单使用 最开始,我们用最短的代码体验一下logging的基本功能. import logging logger = ...

随机推荐

  1. Android 常用 adb 命令总结

    Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...

  2. select Into用法

    1. insert into 表(列1,列2) select 列1,列2 from 表2 where.... 2.select * into 表2 from 表 1where... 上面写法标识将表1 ...

  3. Javascript获取当前时间戳的方法

    定义日期:   Date 对象用于处理日期和时间.   可以通过 new 关键词来定义 Date 对象.以下代码定义了名为 myDate 的 Date 对象:   var myDate=new Dat ...

  4. MySQL必知必会笔记<1>

    [英]ben Forta著 1 1.0 选择数据库 use eg: use 数据库名: 2.0 show命令查看信息: show databases; show tables; show column ...

  5. Android_神奇的android:clipChildren属性

    正文 一.效果图 看到这个图时你可以先想想如果是你,你怎么实现这个效果.马上想到用RelativeLayout?NO,NO,NO,,, 二.实现代码 <?xml version="1. ...

  6. 如果有需要确解MD5的,可以尝试这个网站。

    http://www.hashkiller.co.uk/md5-decrypter.aspx

  7. mysql性能优化学习笔记(2)如何发现有问题的sql

    一.使用mysql慢查询日志对有效率问题的sql进行监控      1)开启慢查询       show variables like ‘slow_query_log’;//查看是否开启慢查询日志   ...

  8. Python爬虫:常用浏览器的useragent

    1,为什么需要修改UserAgent 在写python网络爬虫程序的时候,经常需要修改UserAgent,有很多原因,罗列几个如下: 不同Agent下看到的内容不一样,比如,京东网站上的手机版网页和p ...

  9. UML--用例图

    一.UML概述 1.UML的作用:a 把复杂的问题分解   b 实现了可视化     UML是由Rational公司创建的 2.UML是什么:是一种语言,有属于自己的标准表达规则,是一种分析设计语言, ...

  10. HTML5 服务器发送事件(Server-Sent Events)介绍

    w3cschool菜鸟教程 Server-Sent 事件 - 单向消息传递 Server-Sent 事件指的是网页自动获取来自服务器的更新. 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新 ...