定义一个MyLogger类,通过这个类可以多个py文件调用共同输出log到文件和屏幕
完整代码:
class MyLogger:
def __init__(self, name):
self.logger = logging.getLogger(name)
# 设置输出等级
self.logger.setLevel(logging.DEBUG)
# 输出格式
self._format_ = '%(asctime)s %(name)s [%(levelname)s] %(lineno)d - %(module)s : %(message)s'
self.level = logging.DEBUG
self.dateformat = '%Y/%m/%d %H:%M:%S'
# 文件路径
if "linux" in sys.platform:
self.filename = '/root/xmu_report/output.log'
else:
self.filename = './output.log'
# 新建一个handler按时保存
# W0每周一分隔文件 最大文件数量5
log_file_handler = logging.handlers.TimedRotatingFileHandler(filename=self.filename, when="W0", interval=1, backupCount=5)
log_file_handler.setFormatter(logging.Formatter(self._format_))
log_file_handler.setLevel(logging.DEBUG)
# 这个handler输出log到控制台
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.DEBUG)
stream_handler.setFormatter(logging.Formatter(self._format_))
self.logger.addHandler(log_file_handler)
self.logger.addHandler(stream_handler)
def getLogger(self):
return self.logger
调用:
if __name__ == '__main__':
logger = MyLogger(__name__).getLogger()
logger.info('test')
logger.warning('test')
logger.error('test')
输出:
2021-04-29 11:07:40,492 main [INFO] 33 - mylogger : test
2021-04-29 11:07:40,493 main [WARNING] 34 - mylogger : test
2021-04-29 11:07:40,493 main [ERROR] 35 - mylogger : test
logging日志输出等级
级别 | 数值 |
CRITICAL | 50 |
ERROR | 40 |
WARNING | 30 |
INFO | 20 |
DEBUG | 10 |
NOTSET | 0 |