Python学习笔记——基础篇第六周——logging模块
Posted Yared
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习笔记——基础篇第六周——logging模块相关的知识,希望对你有一定的参考价值。
常用模块之logging
用于便捷记录日志且线程安全的模块
import logging logging.basicConfig(filename=\'log.log\', format=\'%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s\', datefmt=\'%Y-%m-%d %H:%M:%S %p\', level=10) logging.debug(\'debug\') logging.info(\'info\') logging.warning(\'warning\') logging.error(\'error\') logging.critical(\'critical\') logging.log(10,\'log\')
对于等级:
CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN = WARNING INFO = 20 DEBUG = 10 NOTSET = 0
只有大于当前日志等级的操作才会被记录。
对于格式,有如下属性可是配置:
---------------------------------------------------------------------------------------------
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug()
, info()
, warning()
, error()
and critical() 5个级别,
下面我们看一下怎么用。
最简单用法
import logging logging.warning("user [alex] attempted wrong password more than 3 times") logging.critical("server is down") #输出 WARNING:root:user [alex] attempted wrong password more than 3 times CRITICAL:root:server is down
看一下这几个日志级别分别代表什么意思
Level | When it’s used |
---|---|
DEBUG |
Detailed information, typically of interest only when diagnosing problems. |
INFO |
Confirmation that things are working as expected. |
WARNING |
An indication that something unexpected happened, or indicative of some problem in the near future (e.g. ‘disk space low’). The software is still working as expected. |
ERROR |
Due to a more serious problem, the software has not been able to perform some function. |
CRITICAL |
A serious error, indicating that the program itself may be unable to continue running. |
如果想把日志写到文件里,也很简单
import logging logging.basicConfig(filename=\'example.log\',level=logging.INFO) logging.debug(\'This message should go to the log file\') logging.info(\'So should this\') logging.warning(\'And this, too\')
其中下面这句中的level=loggin.INFO意思是,把日志纪录级别设置为INFO,也就是说,只有比日志是INFO或比INFO级别更高的日志 才会被纪录到文件里,在这个例子, 第一条日志是不会被纪录的,如果希望纪录debug的日志,那把日志级别改成DEBUG就行了。
logging.basicConfig(filename=\'example.log\',level=logging.INFO)
感觉上面的日志格式忘记加上时间啦,日志不知道时间怎么行呢,下面就来加上!
import logging logging.basicConfig(format=\'%(asctime)s %(message)s\', datefmt=\'%m/%d/%Y %I:%M:%S %p\') logging.warning(\'is when this event was logged.\') #输出 12/12/2010 11:46:36 AM is when this event was logged.
如果想同时把log打印在屏幕和文件日志里,就需要了解一点复杂的知识 了
The logging library takes a modular approach and offers several categories of components: loggers, handlers, filters, and formatters.
- Loggers expose the interface that application code directly uses.
- Handlers send the log records (created by loggers) to the appropriate destination.
- Filters provide a finer grained facility for determining which log records to output.
- Formatters specify the layout of log records in the final output.
import logging #create logger logger = logging.getLogger(\'TEST-LOG\') logger.setLevel(logging.DEBUG) # create console handler and set level to debug ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # create file handler and set level to warning fh = logging.FileHandler("access.log") fh.setLevel(logging.WARNING) # create formatter formatter = logging.Formatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\') # add formatter to ch and fh ch.setFormatter(formatter) fh.setFormatter(formatter) # add ch and fh to logger logger.addHandler(ch) logger.addHandler(fh) # \'application\' code logger.debug(\'debug message\') logger.info(\'info message\') logger.warn(\'warn message\') logger.error(\'error message\') logger.critical(\'critical message\')
参考链接:
http://www.cnblogs.com/alex3714/articles/5161349.html
http://www.cnblogs.com/wupeiqi/articles/4963027.html
以上是关于Python学习笔记——基础篇第六周——logging模块的主要内容,如果未能解决你的问题,请参考以下文章
Python学习笔记——基础篇第六周——Subprocess模块