首页 > 编程语言 > 详细

Python Logger类,保存本地文件并在console打印

时间:2021-05-16 01:15:57      阅读:32      评论:0      收藏:0      [点我收藏+]
import logging
import time
import os



class Logger:
    def __init__(self, logger_name):
        # 创建一个logger
        self.logger = logging.getLogger(logger_name)

        self.logger.setLevel(logging.DEBUG) # 需要记录的日志级别
        basedir = os.path.abspath(os.path.dirname(__file__))
        log_path = os.path.join(basedir, ‘logs‘, time.strftime("%F"))  # 日志根目录 ../logs/yyyy-mm-dd/

        if not os.path.exists(log_path):
            os.mkdir(log_path)

        # # 创建一个handler,用于写入日志文件
        log_name = os.path.join(log_path, ‘out.log‘)
        fh = logging.FileHandler(log_name, encoding=‘utf-8‘, mode=‘a‘)  # 指定utf-8格式编码,避免输出的日志文本乱码
        fh.setLevel(logging.DEBUG) # 需要写入的日志级别

        # 创建一个handler,用于将日志输出到控制台
        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 get_log(self):  # 定义一个函数,回调logger实例"""
        return self.logger

    def shutdown(self):
        for handler in self.logger.handlers[:]:
            self.logger.removeHandler(handler)

使用

import Logger

logger = Logger(‘TYPE_NAME‘) # 初始化

# 不同级别的日志
logger.get_log().info(‘MESSAGE‘)
logger.get_log().warning(‘MESSAGE‘)
logger.get_log().error(‘MESSAGE‘)
logger.get_log().critical(‘MESSAGE‘)
logger.get_log().debug(‘MESSAGE‘)

logger.shutdown() # 释放logger.注意,如果不释放日志内会出现冗余记录

Python Logger类,保存本地文件并在console打印

原文:https://www.cnblogs.com/bionexit/p/14772488.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!