直接上源码:
# _*_ coding:utf-8 _*_
import logging
import time
import os.path
class Logger(object):
def __init__(self, logger):
"""
指定日志保存的文件路径,日志级别,以及调用文件将日子存入指定的文件中
:param logger:
"""
'''
一个系统只有一个logging对象,并且该对象不能被直接实例化,获取logging对象的方法为getLogger
'''
self.logger = logging.getLogger(logger)
self.logger.setLevel(logging.DEBUG) # 定义日志级别
'''
Logging类型说明:
Logger:
LogRecord:日志记录器,将日志传到相应的处理器处理
Handler:处理器,将日志发送到合适的目的地
Formatter:格式化器,指出最终输出中日志记录的布局
'''
# 创建一个handles,用户写入日志文件
rq = time.strftime('%Y%m%d%H%M',time.localtime(time.time()))
log_path = os.path.dirname(os.path.dirname(__file__)) + '/Logs/'
log_name = log_path + rq + '.log'
fh = logging.FileHandler(log_name, encoding='utf-8') # 防止文件中中文乱码
fh.setLevel(logging.INFO)
# 在创建一个handles,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
self.logger.addHandler(fh)
self.logger.addHandler(ch)
def getlog(self):
return self.logger
调用:
logger = Logger(logger='BasePage').getlog() # 在调用类“BasePage”之前声明