CV可用log。

logging日志

日志的基本了解
  • 日志级别
    日志记录级别的数值如图。如果你想要定义自己的级别,并且需要它们具有相对于预定义级别的特定值。如果你定义具有相同数值的级别,它将覆盖预定义的值;预定义的名称将失效。
    在这里插入图片描述
  • login 在代码中详细标注。避免log代码和日志输出混乱。我就另外建立了一个文件。
  • 一共两个py文件。一个是file.py,另外一个是log.py
    在这里插入图片描述
  • 代码附件file.py
#导入文件path
import os.path
#建立了一个获取当前文件的路径方法。
def current_path(path: str):
    """
    获取当前路径的方法
    :param path: 文件路径比如"'../errorlogin/2022-11-20-18-52-39.text'"
    :return: 绝对路径的字符串
    """
    # 获取文件夹当前的绝对路径
    current_work_dir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), path))
    print(current_work_dir)
    return current_work_dir
"""
pisj_1=os.path.abspath(__file__):是获取当前文件路径
wenjj=os.path.dirname(pisj):是获取当前文件夹路径
suerrsu=os.path.join(pjsj,wenjj):拼接成绝对路径
"""
#如果没有这个路径下没有文件时,会自动创建。
def create_file(name: str):
    """
    创建文件
    :param name: 文件名称亦年月日
    """
    path_1 = current_path('../file_log/' + name)
    # 如果当前路径没有文件夹,就会创建新的文件夹
    if not os.path.exists(path_1):
        os.makedirs(path_1)

  • 关于 log.py文件代码
#导入想对应需要的库
import logging
import time
from common import file

class Log():
    def __init__(self):  # 构造初始化函数
        """
        添加一个日志器
        """
        self.logger = logging.getLogger()
        self.logger.setLevel(logging.INFO)#(logging.INFO)设置的对文件输出的级别的打印。
        

    def fomt(self):
        """
        设置格式器
        :return:tuple
        """
        #Formatter是logging的方法。是设置输入的格式。
        for1 = logging.Formatter(fmt='[%(name)s]  [%(levelname)s]  [%(asctime)s] ------->>>>[%(message)s ]')
        for2 = logging.Formatter(fmt='[%(name)s]  [%(levelname)s]  [%(asctime)s] [%(filename)s]------->>>>'
                                     '[%(message)s ]')
        return for1, for2

    def hand(self):
        """
        添加一个处理器 控制台处理器输出 log
        :return: 无
        """
        # StreamHandler输入到控制台中
        h = logging.StreamHandler()
        h.setLevel(logging.DEBUG)
        h.setFormatter(self.fomt()[0])  # 将格式器添加到处理器
        self.logger.addHandler(h)  # 将处理器添加到格式器

    def add_file(self):
        """
        设置 文件输出控制台
        :param file_file: 文件名字
        :return: 无
        """
        year = "%Y-%m-%d"
        hour = '%H-%M-%S'
        # 创建log日志文件夹年月日
        #time.localtime()获取当前时间,返回的struct_time类。
        #time.strftime()我理解的是格式化输出,比如2022-2-22,
        year_str = time.strftime(year, time.localtime())
        file.create_file(year_str)
        # 创建日志
        time_log ='_' + time.strftime(year + " " + hour, time.localtime()) + '.log'
        address = file.current_path('../file_log/' + year_str + '/' + time_log)
        # FileHandler处理数据输出到文件中
        f = logging.FileHandler(filename=address, mode='w', encoding='UTF-8')
        
        f.setLevel(logging.DEBUG)
        f.setFormatter(self.fomt()[1])
        self.logger.addHandler(f)  # 将文件输出控制台添加到日志器

    def global_1(self):
        """
        初始化日志方法
        :param file_1: 文件名称
        :return: logger类
        """
        self.hand()
        self.add_file()
        return self.logger

"""    def add_time(self, file):

        info日志处理器
        # filename:日志文件名
        # when:日志文件按什么维度切分。'S'-秒;'M'-分钟;'H'-小时;'D'-天;'W'-周
        #       这里需要注意,如果选择 D-天,那么这个不是严格意义上的'天',而是从你
        #       项目启动开始,过了24小时,才会从新创建一个新的日志文件,
        #       如果项目重启,这个时间就会重置。所以这里选择'MIDNIGHT'-是指过了午夜
        #       12点,就会创建新的日志。
        # interval:是指等待多少个单位 when 的时间后,Logger会自动重建文件。
        # backupCount:是保留日志个数。默认的0是不会自动删除掉日志。

        # time自动生成文件时间
        time_login = file + '_' + time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time())) + '.log'
        # 添加地址
        address = pathp.current_path('../errorlogin/' + time_login)
        self.d = TimedRotatingFileHandler(filename=address, when='MIDNIGHT', interval=1, backupCount=0,
                                          encoding='utf-8')
        self.d.setLevel(logging.DEBUG)
        self.d.setFormatter(self.fomt()[1])
        self.logger.addHandler(self.d)
"""

  • 引入编码中带用。如下。
    -
  • 效果如下。
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值