码迷,mamicode.com
首页 > 编程语言 > 详细

python日志记录-logging模块

时间:2016-05-06 07:06:17      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

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文件会被删除

 

python日志记录-logging模块

标签:

原文地址:http://www.cnblogs.com/starsea/p/5464043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!