Python标准库模块中有一个logging,logging模块包含以下内容
- 想保存到日志中的消息
- 不同的优先级以及对应的函数:debug()、info()、warn()、error()、crtical()
- 一个或多个logger对象
- 把消息写入终端、文件、数据库或者其他地方的handler
- 创建输出的formatter
import logging
logging.info('logging info')
logging.error('logging error')
logging.debug('logging debug')
logging.warning('logging warning')
>>>
ERROR:root:logging error
WARNING:root:logging warning
从输出来看,debug()和info()什么都没有打印,另外两个函数在每条信息之前打印出来级别:root
指定日志级别
日志的默认优先级是WARNING
我们可以通过logging的basicConfig()来设置默认的级别
import logging
logging.basicConfig(level='DEBUG')
logging.info('logging info')
logging.error('logging error')
logging.debug('logging debug')
logging.warning('logging warning')
>>>
INFO:root:logging info
ERROR:root:logging error
DEBUG:root:logging debug
WARNING:root:logging warning
从输出可以看到DEBUG是最低一级,因此可以看到打印所有的日志级别信息
logger对象
logger_a= logging.getLogger('logger')
logger_a.debug('logger debug')
>>>
DEBUG:logger:logger debug
指定输出log信息到文件
我们不止可以将log信息打印到屏幕上,还可以将日志文件输出到文件中
调用basicConfig()时使用filename参数会创建一个FileHandler并对logger进行设置。logging模块至少包含15种handler 包括电子邮件、Web服务器
basicConfig还可以传入format字段,可以指定格式
import logging
fmt = '%(asctime) s %(levelname) s %(lineno) s %(message) s'
logging.basicConfig(level='DEBUG', filename='log_file.log', format=fmt)
logging.info('logging info')
logging.error('logging error')
logging.debug('logging debug')
logging.warning('logging warning')
logger_a = logging.getLogger('logger')
logger_a.debug('logger debug')