logging模块普通使用思路
1、创建一个日志记录器logger对象
2、设置日志级别
3、创建一个写文件的日志处理器handler,并设置日志输出格式
4、创建一个输出到控制台的日志处理器handler,并设置日志输出格式
上代码
# -*- coding: utf-8 -*-
import logging
# 创建日志记录器logger
my_logger = logging.Logger('first_logger')
# 定义日志处理器handler,决定把日志发到文件中
handler_text = logging.FileHandler('../run.log',encoding='utf-8')
# 设置日志级别和输出格式
handler_text.setLevel(logging.INFO)
my_format = logging.Formatter("时间:%(asctime)s - 日志等级:%(levelname)s - 路径:%(pathname)s - 行号:%(lineno)s - 日志内容:%(message)s")
handler_text.setFormatter(my_format)
# 将日志处理器handler添加到对应的日志记录器logger中
my_logger.addHandler(handler_text)
# 定义日志处理器handler,决定把日志发到控制台
handler_console = logging.StreamHandler()
# 设置日志级别和输出格式
handler_console.setLevel(logging.DEBUG)
you_format = logging.Formatter("时间:%(asctime)s - 日志等级:%(levelname)s - 路径:%(pathname)s - 行号:%(lineno)s - 日志内容:%(message)s")
handler_console.setFormatter(you_format)
# 将日志处理器handler添加到对应的日志记录器logger中
my_logger.addHandler(handler_console)
# 使用logger:
my_logger.debug("debug,调试日志")
my_logger.info("info,普通日志")
my_logger.warning("waring,警告日志")
my_logger.error("error,错误日志")
my_logger.critical("critical,严重、危险日志")
控制台输出
log文件
封装代码:
# -*- coding: utf-8 -*-
import logging
class LoggerHander():
# 创建一个logger
def __init__(self):
# 创建一个日志记录器logger对象
self._logger = logging.Logger('first_logger')
# 设置日志级别
self._logger.setLevel(logging.INFO)
# 设置format格式
self._format = logging.Formatter("时间:%(asctime)s - 日志等级:%(levelname)s - 路径:%(pathname)s - 行号:%(lineno)s - 日志内容:%(message)s")
# 将日志过滤器handler添加到logger上完成日志的输出
self._logger.addHandler(self.get_file_handler('../run.log'))
self._logger.addHandler(self.get_console_handler())
# 创建一个写文件的handler
def get_file_handler(self,filename=None):
'''返回一个handler'''
# 获取一个handler
filehandler = logging.FileHandler(filename=filename,encoding='utf-8')
# 设置日志格式
filehandler.setFormatter(self._format)
# 返回一个handler对象
return filehandler
# 创建一个打印在控制台的handler
def get_console_handler(self):
# 获取一个handler
console_handler = logging.StreamHandler()
# 设置日志格式
console_handler.setFormatter(self._format)
# 返回一个handler对象
return console_handler
def logger(self):
return self._logger
def logger():
l = LoggerHander().logger()
return l
if __name__ == '__main__':
logger=logger()
logger.info("内容一")
打印结果