注册 X
我已阅读并同意  服务条款
首页 > IT技术笔记 > 查看笔记

python之日志处理

#日志的使用

'''

日志等级(level) 描述

DEBUG   最详细的日志信息,典型应用场景是 问题诊断

INFO   信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作

WARNING   当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的

ERROR   由于一个更严重的问题导致某些功能不能正常运行时记录的信息

CRITICAL  当发生严重错误,导致应用程序不能继续运行时记录的信息


说明:


上面列表中的日志等级是从上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR < CRITICAL,而日志的信息量是依次减少的;

当为某个应用程序指定一个日志级别后,应用程序会记录所有日志级别大于或等于指定日志级别的日志信息,而不是仅仅记录

指定级别的日志信息,nginx、php等应用程序以及这里要提高的python的logging模块都是这样的。同样,logging模块也可以

指定日志记录器的日志级别,只有级别大于或等于该指定日志级别的日志记录才会被输出,小于该等级的日志记录将会被丢弃。

'''


点击复制

import logging
'''
先简单配置下日志器的日志级别

'''
'''
logging.basicConfig(level=logging.DEBUG)  #BUBUG<
 
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
'''
'''
输出结果:
DEBUG:root:This is a debug log.
INFO:root:This is a info log.
WARNING:root:This is a warning log.
ERROR:root:This is a error log.
CRITICAL:root:This is a critical log.
'''
#所有等级的日志信息都被输出了,说明配置生效了。
#在配置日志器日志级别的基础上,在配置下日志输出目标文件和日志格式

'''
我们来列举一下logging模块中定义好的可以用于format格式字符串中字段有哪些:

字段/属性名称	    使用格式	    描述
asctime	        %(asctime)s	       日志事件发生的时间--人类可读时间,如:2003-07-08 16:49:45,896
created	        %(created)f	       日志事件发生的时间--时间戳,就是当时调用time.time()函数返回的值
relativeCreated	%(relativeCreated)d    日志事件发生的时间相对于logging模块加载时间的相对毫秒数(目前还不知道干嘛用的)
msecs	        %(msecs)d	       日志事件发生事件的毫秒部分
levelname	%(levelname)s	       该日志记录的文字形式的日志级别('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
levelno	        %(levelno)s	       该日志记录的数字形式的日志级别(10, 20, 30, 40, 50)
name	        %(name)s	       所使用的日志器名称,默认是'root',因为默认使用的是 rootLogger
message	        %(message)s	       日志记录的文本内容,通过 msg % args计算得到的
pathname	%(pathname)s	       调用日志记录函数的源码文件的全路径
filename	%(filename)s	       pathname的文件名部分,包含文件后缀
module	        %(module)s	       filename的名称部分,不包含后缀
lineno	        %(lineno)d	       调用日志记录函数的源代码所在的行号
funcName	%(funcName)s	       调用日志记录函数的函数名
process	        %(process)d	       进程ID
processName	%(processName)s	       进程名称,Python 3.1新增
thread	        %(thread)d	       线程ID
threadName	%(thread)s	       线程名称
'''

'''
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT)
 
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
'''
#此时会发现控制台中已经没有输出日志内容了,但是在python代码文件的相
#同目录下会生成一个名为'my.log'的日志文件,该文件中的内容为:
'''
2017-05-08 14:29:53,783 - DEBUG - This is a debug log.
2017-05-08 14:29:53,784 - INFO - This is a info log.
2017-05-08 14:29:53,784 - WARNING - This is a warning log.
2017-05-08 14:29:53,784 - ERROR - This is a error log.
2017-05-08 14:29:53,784 - CRITICAL - This is a critical log.

'''
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"
 
logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT)
 
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")


 打赏        分享



评论