import logging
import os
# 创建一个logs目录来存放log日志文件
logspath = os.path.join(os.path.dirname(os.path.dirname(__file__)),'logs')
print(logspath)
if not os.path.exists(logspath):
os.mkdir(logspath)
class Log2(object):
logger = logging.getLogger(__name__)
def __init__(self):
# 设置日志文件的路径
self.logfile =os.path.join(logspath,'app.log')
def __console(self,name,message):
# 设置日志的输出格式
format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
# 创建控制台打印输出流
c_handler = logging.StreamHandler()
c_handler.setFormatter(format)
# 设置文件打印输出流 可以给2个参数,1是文件路径,2是字符集
f_handler = logging.FileHandler(self.logfile,encoding = "utf-8")
f_handler.setFormatter(format)
# 设置日志级别
self.logger.setLevel(logging.DEBUG)
# 吧输出流和文件写入logger
# AddHandler用于在运行时将事件与事件处理程序相关联
self.logger.addHandler(f_handler)
self.logger.addHandler(c_handler)
if name=='debug':
self.logger.debug(message)
if name=='info':
self.logger.info(message)
if name=='error':
self.logger.error(message,exc_info=True)
if name=='warn':
self.logger.warn(message)
# RemoveHandler用于移除事件与事件处理程序之间的关联
self.logger.removeHandler(c_handler)
self.logger.removeHandler(f_handler)
# 关闭流
f_handler.close()
c_handler.close()
def debug(self,message):
self.__console('debug',message)
def info(self,message):
self.__console('info',message)
def warn(self,message):
self.__console('warn',message)
def error(self,message):
self.__console('error',message)