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

Posted BionExit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Logger类,保存本地文件并在console打印相关的知识,希望对你有一定的参考价值。

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打印的主要内容,如果未能解决你的问题,请参考以下文章

python的print输出在控制台并且将输出内容保存为文件

怎么用Python + Flask框架实现Web应用实现日志记录功能?

Swift:写入 JSON 并在本地保存到 iPhone 文件

保存 CSV 文件,使其名称本身就是一个字符串

原创由于python的导入方式引起的深坑

请问AS3.0 怎样可以将Bitmap对象保存为本地图片文件(如JPG文件)。谢谢!