【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)
相关推荐
江润舟11 分钟前
万物 | 炼器 从零手搓工业级旋转目标检测网络 · 卷2 —— 计算图、梯度与反向传播(三)
人工智能·深度学习
zhurui_xiaozhuzaizai13 分钟前
github上关于节省token的项目一览,上下文压缩,节省token,agent优化skill,热门项目
人工智能·深度学习·github
xn713321 分钟前
实测 Codex CLI 0.154.0:response.failed 为什么会被 idle timeout waiting for SSE 覆盖
python·openai
李高钢22 分钟前
Python Flask 框架入门:从零搭建你的第一个 Web 应用
前端·python·flask
码农学院26 分钟前
外贸独立站GEO实战:用 Python 自动生成多语言 llms.txt 和 Schema 站点地图
人工智能·python·chatgpt·geo·geo优化·ai优化aio
jsjzsl231 分钟前
独立自由度框架下核聚变的本体论本质与商业化技术新路径
人工智能·python·算法
Thomas.Sir35 分钟前
第45课:TensorFlow|异常检测实战【工业设备数据故障识别模型搭建】
人工智能·python·tensorflow
数商云企41 分钟前
2026年西安电商智能客服开发选数商云企,技术稳交付快
大数据·python
Patrick在香港1 小时前
Python 分析香港 AQHI 归档 1644 天:同一天的空气,早上 8 点报 3,下午 5 点报 10
开发语言·python·数据分析·api·restful·数据可视化·开放数据
SamChan901 小时前
Python批量处理PDF踩坑实录:中文编码、字体内嵌、多栏排版与内存占用
python·单片机·ai·pdf·机器翻译