【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)
相关推荐
Ratten4 分钟前
批量识别图片文字保存到 excel 中
python
WSSWWWSSW24 分钟前
Seaborn数据可视化实战:Seaborn多变量图表绘制高级教程
python·信息可视化·数据分析·matplotlib·seaborn
ShawnLeiLei1 小时前
2.3 Flink的核心概念解析
数据库·python·flink
-Xie-1 小时前
Maven(三)
python·pycharm·maven
WSSWWWSSW1 小时前
Seaborn数据可视化实战:Seaborn颜色与样式定制教程
python·信息可视化·seaborn
灵智工坊LingzhiAI2 小时前
基于深度学习的中草药识别系统:从零到部署的完整实践
人工智能·深度学习
Boxsc_midnight2 小时前
【适合中小企业应用的Flask网站部署指南】【小白指南系列】如何在Windows Server服务器上部署Flask网站和SSL证书开启HTTPS
服务器·windows·python·flask
码界筑梦坊3 小时前
173-基于Flask的微博舆情数据分析系统
后端·python·数据分析·flask·毕业设计
nightunderblackcat4 小时前
新手向:异步编程入门asyncio最佳实践
前端·数据库·python
weixin_448617054 小时前
疏老师-python训练营-Day54Inception网络及其思考
python