首先,logging 将信息分成了 6 个级别,分别是 NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL,显然,越往后说明问题越严重。
logging 模块有 5 个方法,分别为 debug、info、warning、error、critical,分别对应上面五个等级信息,(确实没有 notset 这个函数),logging 默认忽略 INFO 和其以下级别的信息,也就是说只有 WARNING 以上的级别才会在控制台像 print 一样输出。
显然,有一个函数要设置 logging 显示信息的级别以及输出形式等,这个函数就是 basicConfig,下面是其主要用到的参数:
level:要显示的级别(包括 level 后面跟的那个级别)
filename:存储文件路径
filemode:打开文件方式,默认为 a
format:日志显示格式,抄一个好看的就行了,懒得看怎么定义的
datefmt:日期显示格式,同抄
上次我们写代码的时候,就已经用到这些知识了,但是发现,指定 filename、filemode 以后,就会将符合条件的信息记录在文件中,而不会在控制台输出了。相关代码如下所示,非常简单:
import logging
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"
logging.basicConfig(filename='scrapLog.txt', level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT)
logging.debug('debug')
logging.info('info')
import logging
import logging.handlers
logger = logging.getLogger("logger")
handler1 = logging.StreamHandler()
handler2 = logging.FileHandler(filename="test.log")
logger.setLevel(logging.DEBUG)
handler1.setLevel(logging.WARNING)
handler2.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")
handler1.setFormatter(formatter)
handler2.setFormatter(formatter)
logger.addHandler(handler1)
logger.addHandler(handler2)
logger.debug('This is a customer debug message')
logger.info('This is an customer info message')
logger.warning('This is a customer warning message')
logger.error('This is an customer error message')
logger.critical('This is a customer critical message')
import logging
import logging.handlers
class MyLog:
def __init__(self, filename='myLog.log', streamLevel=logging.INFO, fileLevel=logging.WARNING):
self.logger = logging.getLogger('TTJQ')
handlerStream = logging.StreamHandler()
handlerFile = logging.FileHandler(filename=filename)
self.logger.setLevel(logging.DEBUG)
handlerStream.setLevel(streamLevel)
handlerFile.setLevel(fileLevel)
formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s")
handlerFile.setFormatter(formatter)
handlerStream.setFormatter(formatter)
self.logger.addHandler(handlerStream)
self.logger.addHandler(handlerFile)
def debug(self, msg):
self.logger.debug(msg)
def info(self, msg):
self.logger.info(msg)
def warning(self, msg):
self.logger.warning(msg)
def error(self, msg):
self.logger.error(msg)
def critical(self, msg):
self.critical(msg)
本文章使用limfx的vsocde插件快速发布