4.[Python]使用logging记录日志

载*请注明原始出处:http://blog.csdn.net/a464057216/article/details/47680149

后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
在这里插入图片描述

python的logging模块功能非常完善,更详细的使用方法可以参考
logging官方文档。下面介绍基本的使用方法,能够让我们定义记录日志的格式,然后向文件中记录日志。
一、定义日志格式
logging.basicConfig([**kwargs]),参数如下:

  • filename:要记录的日志文件名字。
  • filemode:记录日志的模式,默认是'a'。一般都使用默认追加模式,如果使用'w'模式,则程序每次执行都会覆盖前一次的日志。
  • format:日志记录的格式,有很多属性可以使用。

%(asctime)s:日志记录时间,例如2016-07-08 16:49:45,896。
%(filename)s:打印日志的程序源文件名。
%(funcName)s:打印日志的函数名。
%(levelno)d:日志信息的级别。
%(lineno)d:打印日志的程序源文件行号。
%(module)s:打印日志的模块名。
%(message)s:日志消息体
%(pathname)s:打印日志的程序源文件路径。
%(process)d:打印日志的进程号。
%(processName)s:打印日志的进程名字。
%(thread)d:打印日志的线程号。
%(threadName)s:打印日志的线程名字。

  • datefmt:日期格式(如果format里要显示时间的话)
    具体的修饰符用法可以man date看一下,常见的比如'%Y-%m-%d %H:%M:%S'
  • level:日志等级
    其中level只是定义日志器的基本级别,如果要记录的信息级别比它高或者相等才记录,否则忽略不记,例如:
logging.basicConfig(level = logging.INFO, filename = 'log.log')
logging.debug('This will not be logged.')
logging.info('This will be logged.')

执行结果:

mars@mars-Ideapad-V460:~/test$ cat log.log 
INFO:root:This will be logged.

logging模块各个级别从低到高依次是:

logging.NOTSET: 0
logging.DEBUG: 10
logging.INFO: 20
logging.WARNING: 30
logging.ERROR: 40
logging.CRITICAL: 50

二、记录日志

  1. logging.debug(msg[, args[, kwargs]]):打印DEBUG级别的日志消息,msg的信息会替换到logging.basicConfig函数的format参数指定的%(message)s里面,args可以为msg提供消息,kwargs中可以使用extra参数拓展logging.basicConfig函数的format参数的属性,例如:
d = {'para': 'This'}
logging.basicConfig(level = logging.INFO, filename = 'log.log',
                    format = '%(para)s is a(n) %(message)s')
logging.info('test %s', 'case', extra = d)

执行结果:

mars@mars-Ideapad-V460:~/test$ cat log.log
This is a(n) test case

logging.info(msg[, args[, kwargs]])、logging.warning(msg[, args[, kwargs]])、logging.error(msg[, args[, kwargs]])、logging.critical(msg[, args[, kwargs]])分别打印INFO、WARNING、ERROR、CRITICAL级别的日志消息,用法和logging.debug()一样。
还有一个接口是logging.log(level,msg[, args[, kwargs]]),它的第一个参数指定日志消息级别,相当于可以灵活调用debug、info、warning、error、cirtical这些接口。

三、一个例子
停留随机的时间,然后打印当前时间和日志级别消息。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @author: Mars Loo

import logging, time, random

logging.basicConfig(filename = 'log.log',
                    level = logging.INFO,
                    format = '%(asctime)s %(levelno)d %(message)s',
                    timefmt = '%H:%M:%s')

try:
    logging.info('task begin==============')
    while True:
        logging.critical('This is a critical message.')
        time.sleep(random.randint(1,4))
        logging.warning('This is a warning message.')
except:
    logging.info('task end===============')

执行结果:

mars@mars-Ideapad-V460:~/test$ cat log.log
2015-08-15 11:51:34,899 20 task begin==============
2015-08-15 11:51:34,899 50 This is a critical message.
2015-08-15 11:51:35,900 30 This is a warning message.
2015-08-15 11:51:35,901 50 This is a critical message.
2015-08-15 11:51:37,903 30 This is a warning message.
2015-08-15 11:51:37,925 50 This is a critical message.
2015-08-15 11:51:38,926 30 This is a warning message.
2015-08-15 11:51:38,926 50 This is a critical message.
2015-08-15 11:51:40,929 30 This is a warning message.
2015-08-15 11:51:40,929 50 This is a critical message.
2015-08-15 11:51:43,932 30 This is a warning message.
2015-08-15 11:51:43,932 50 This is a critical message.
2015-08-15 11:51:46,933 30 This is a warning message.
2015-08-15 11:51:46,934 50 This is a critical message.
2015-08-15 11:51:47,852 20 task end===============

如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值