logging模块主要用于调试程序,输出事件日志。 用户指定的message,从上到下,重要性逐渐增加,默认输出warning及以上的
import logging
logging.basicConfig(
level=logging.INFO,
format='%(name)s %(asctime)s -- %(message)s',
datefmt='%d/%m/%y %H:%M:%S',
filename='logging_info'
)
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('警告警告')
Logger不会直接实例化,而是通过logging.getLogger(name)实例化
对同一名称的getLogger()进行多次调用将只会返回同一个Logger对象
fmt指定日志的输出项目
datefmt指定日志输出时间的格式
style指定格式符(’%’,’{‘, ‘$’)
处理器,分为三个:StreamHandler(屏幕输出流)和FileHandler(文件输出流)以及NullHandler(供开发者使用的)
指定日志屏幕输出流
指定日志文件输出流
filename为日志文件名,默认日志文件写入为追加,需要指定编码
def my_logger(filename, file=True, stream=True):
_logger = logging.getLogger()
formatter = logging.Formatter(fmt='%(name)s %(asctime)s [%(lineno)d] -- %(message)s',
datefmt='%d/%m/%y %H:%M:%S')
if file:
file_handler = logging.FileHandler(filename, encoding='utf-8')
file_handler.setFormatter(formatter) # 文件流 文件操作符
_logger.addHandler(file_handler)
if stream:
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter) # 屏幕流 屏幕操作符
_logger.addHandler(stream_handler)
return _logger
logger = my_logger('logging', file=False)
logger.warning("出错了")