【Python深度学习】——使用Logging记录模型训练过程

【Python深度学习】------使用Logging记录模型训练过程

  • [1. 导入logging库, getLogger()创建日志记录器](#1. 导入logging库, getLogger()创建日志记录器)
  • [2. logger.setLevel()设置log级别](#2. logger.setLevel()设置log级别)
  • [3. FileHandler()设置日志文件路径](#3. FileHandler()设置日志文件路径)
  • [4. StreamHandler()将日志输出到控制台](#4. StreamHandler()将日志输出到控制台)
  • [5. 其他性质](#5. 其他性质)
  • [6. 代码示例](#6. 代码示例)

1. 导入logging库, getLogger()创建日志记录器

python 复制代码
import logging
logger = logging.getLogger()

在getLogger()函数中,可以设置日志记录器的名称, 例如:

python 复制代码
logger = logging.getLogger(__name__)
## 或者
logger = logging.getLogger('my_logger')

2. logger.setLevel()设置log级别

python 复制代码
logger.setLevel(level=logging.DEBUG)
级别 示例 级别数值
DEBUG logging.debug 10
INFO logging.info 20
WARNING logging.warning 30
ERROR logging.error 40
CRITICAL logging.critical 50

3. FileHandler()设置日志文件路径

python 复制代码
file_handler = logging.FileHandler('my_log.log')

4. StreamHandler()将日志输出到控制台

python 复制代码
stream_handler = logging.StreamHandler()
logger.addHandler(stream_handler)

5. 其他性质

  • propagate: 是否将日志消息传递给上级日志记录器
python 复制代码
logger.propagate = False

6. 代码示例

在Geo Transformer代码中, 对logging库中要使用的一些功能, 封装成了一个Logger类, 详情如下:

python 复制代码
import logging

import coloredlogs


def create_logger(log_file=None):
    logger = logging.getLogger()
    logger.handlers.clear()
    logger.setLevel(level=logging.DEBUG)
    logger.propagate = False

    format_str = '[%(asctime)s] [%(levelname).4s] %(message)s'

    stream_handler = logging.StreamHandler()
    colored_formatter = coloredlogs.ColoredFormatter(format_str)
    stream_handler.setFormatter(colored_formatter)
    logger.addHandler(stream_handler)

    if log_file is not None:
        file_handler = logging.FileHandler(log_file)
        formatter = logging.Formatter(format_str, datefmt='%Y-%m-%d %H:%M:%S')
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)

    return logger


class Logger:
    def __init__(self, log_file=None, local_rank=-1):
        if local_rank == 0 or local_rank == -1:
            self.logger = create_logger(log_file=log_file)
        else:
            self.logger = None

    def debug(self, message):
        if self.logger is not None:
            self.logger.debug(message)

    def info(self, message):
        if self.logger is not None:
            self.logger.info(message)

    def warning(self, message):
        if self.logger is not None:
            self.logger.warning(message)

    def error(self, message):
        if self.logger is not None:
            self.logger.error(message)

    def critical(self, message):
        if self.logger is not None:
            self.logger.critical(message)
相关推荐
pythonSuperman几秒前
Correlation Matrix of Model Logits
人工智能·深度学习·机器学习
AndrewHZ4 分钟前
【图像处理基石】什么是影调?并用python实现一个哈苏色彩影调
图像处理·人工智能·python·计算机视觉·影调·摄影语言
神经星星17 分钟前
在线教程丨字节开源 InfiniteYou 图像生成框架,实现高保真面部特征迁移
人工智能·深度学习·机器学习
ayiya_Oese19 分钟前
[环境配置] 2. 依赖库安装
人工智能·python·深度学习·神经网络·目标检测·机器学习·计算机视觉
站大爷IP21 分钟前
FastAPI全面指南:从入门到企业级应用实战
python
CH3_CH2_CHO30 分钟前
DAY01:【pytorch】张量
人工智能·pytorch·python
胖哥真不错43 分钟前
Python基于OpenCV和SVM实现中文车牌识别系统GUI界面
python·opencv·支持向量机·项目实战·gui界面·中文车牌识别
安迪小宝1 小时前
python基础语法13-装饰器
开发语言·前端·python
Niuguangshuo1 小时前
Python设计模式:策略模式
python·设计模式·策略模式
Mysticbinary1 小时前
Python 迭代器和生成器概念
python·迭代器·生成器