import logging
from logging.handlers import TimedRotatingFileHandler
def get_logger(name, filename, encoding='utf-8', fmt=None, when='d', interval=1, backup_count=7, debug=False):
"""
返回一个日志器
:param name: 日志器的名字
:param filename: 日志文件名
:param encoding: 日志文件编码方式
:param fmt: 日志格式
:param when: 日志轮转时间单位
:param interval: 时间间隔
:param backup_count: 轮转文件个数
:param debug: 调试模式
:return:
"""
# 创建日志器
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG) # 设置日志器的等级为debug,后面通过处理器调解
# 参数处理
if debug:
file_level = logging.DEBUG
console_level = logging.DEBUG
else:
file_level = logging.WARN
console_level = logging.INFO
if fmt is None:
fmt = '%(levelname)s %(asctime)s [%(filename)s-->line:%(lineno)d]:%(message)s'
# 创建日志处理器
# 创建一个文件处理器,控制台处理器
file_handler = TimedRotatingFileHandler(filename=filename, when=when, interval=interval, backupCount=backup_count, encoding=encoding)
file_handler.setLevel(file_level)
console_handler = logging.StreamHandler()
console_handler.setLevel(console_level)
# 创建格式化器
formatter = logging.Formatter(fmt=fmt)
# 添加格式化器
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
# 添加日志处理器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
if __name__ == '__main__':
lg = get_logger('test', 'test.log')
lg.warn(1111111111)
打印日志代码