4.Python记录日志logging模块的使用
2015-08-15 11:04
1626 查看
python的logging模块功能非常完善,更详细的使用方法可以参考
logging官方文档。下面介绍基本的使用方法,能够让我们定义记录日志的格式,然后向文件中记录日志。
一、定义日志格式
logging.basicConfig([**kwargs]),参数如下:
filename:要记录的日志文件名字。
filemode:记录日志的模式,默认是’a’。一般都使用默认追加模式,如果使用‘w’模式,则程序每次执行都会覆盖前一次的日志。
format:日志记录的格式,有很多属性可以使用。
%(asctime)s:日志记录时间,例如2003-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模块各个级别从低到高依次是:
logging.NOTSET: 0
logging.DEBUG: 10
logging.INFO: 20
logging.WARNING: 30
logging.ERROR: 40
logging.CRITICAL: 50
二、记录日志
logging.debug(msg[, args[, kwargs]]):打印DEBUG级别的日志消息,msg的信息会替换到logging.basicConfig函数的format参数指定的%(message)s里面,args可以为msg提供消息,kwargs中可以使用extra参数拓展logging.basicConfig函数的format参数的属性,例如:
执行结果:
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这些接口。
三、一个例子
停留随机的时间,然后打印当前时间和日志级别消息。
执行结果:
logging官方文档。下面介绍基本的使用方法,能够让我们定义记录日志的格式,然后向文件中记录日志。
一、定义日志格式
logging.basicConfig([**kwargs]),参数如下:
filename:要记录的日志文件名字。
filemode:记录日志的模式,默认是’a’。一般都使用默认追加模式,如果使用‘w’模式,则程序每次执行都会覆盖前一次的日志。
format:日志记录的格式,有很多属性可以使用。
%(asctime)s:日志记录时间,例如2003-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
二、记录日志
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===============
相关文章推荐
- python字符串处理 join split replace的使用方法
- Python中的self,cls参数
- python 字典访问 items()和iteritems()的区别
- python sort和sorted使用详解
- Python异常管理
- Python开发环境的搭建(win7)
- python 数值类型,判断类型
- python快速使用(三)类、异常
- Python Version 2.7 required which was not found in the registry 问题解决
- 3.Python 条件if
- 3.Python多线程程序Ctrl+C的优雅终止
- Python安装NumPy,matplotlib等方法
- python自动化运维――OMserver平台Web服务端部署过程
- Python的中国镜像网站--下载资源更快
- 零基础学python-3.3 标识符
- 零基础学python-3.3 标识符
- 零基础学python-3.2 变量赋值
- 零基础学python-3.2 变量赋值
- 零基础学python-3.1 python基本规则和语句
- 零基础学python-3.1 python基本规则和语句