如何为TensorFlow内置tf.logging实现终端打印着色效果?
Hey,作为同样在TensorFlow日志配置上踩过坑的老玩家,太理解你这种想切换到官方内置tf.logging保证兼容性,又舍不得coloredlogs带来的彩色清晰日志的心情了!下面给你整理一套平滑迁移的方案,既能用上tf.logging,又能保留你习惯的使用体验:
一、基础迁移:快速切换到tf.logging
tf.logging是TensorFlow官方提供的日志模块,和TensorFlow的内部日志体系深度集成,兼容性拉满。先把你原来的代码转换成基础版tf.logging用法:
原来的logging+coloredlogs代码:
import logging import coloredlogs logger = logging.getLogger(__name__) coloredlogs.install(level='DEBUG', logger=logger, ...) logger.debug("-- preparing network..")
对应的tf.logging基础实现:
import tensorflow as tf # 设置全局日志级别,替代coloredlogs里的level参数 tf.logging.set_verbosity(tf.logging.DEBUG) # 直接用tf.logging的对应方法输出日志,和原来的logger调用逻辑一致 tf.logging.debug("-- preparing network..") tf.logging.info("Network initialization completed") tf.logging.warning("GPU memory usage exceeds 80%") tf.logging.error("Failed to load pre-trained weights")
这里要注意:tf.logging的级别常量和Python标准logging一一对应:
tf.logging.DEBUG→logging.DEBUGtf.logging.INFO→logging.INFOtf.logging.WARN/tf.logging.WARNING→logging.WARNINGtf.logging.ERROR→logging.ERROR
二、保留彩色日志:给tf.logging加上颜色
如果你不想放弃彩色日志的便利性,其实可以结合coloredlogs的格式化能力,给tf.logging套上彩色输出——因为tf.logging底层还是基于Python标准logging模块实现的,所以我们可以直接修改它的日志处理器:
import tensorflow as tf import logging from coloredlogs import ColoredFormatter # 获取TensorFlow对应的日志实例 tf_logger = logging.getLogger('tensorflow') # 先移除默认的处理器,避免重复输出日志 for handler in tf_logger.handlers[:]: tf_logger.removeHandler(handler) # 创建带彩色格式的控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) # 自定义彩色格式,和你之前习惯的颜色对应 color_formatter = ColoredFormatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s", level_styles={ 'debug': {'color': 'green'}, 'info': {'color': 'cyan'}, 'warning': {'color': 'yellow'}, 'error': {'color': 'red'}, 'critical': {'color': 'red', 'bold': True} } ) console_handler.setFormatter(color_formatter) tf_logger.addHandler(console_handler) # 现在用tf.logging输出的日志就和之前一样带颜色了! tf.logging.debug("-- preparing network..") # 绿色debug信息 tf.logging.info("This is cyan info text!") # 青色info信息 tf.logging.warning("Yellow warning alert!") # 黄色warning信息
三、额外小提示
tf.logging会自动和TensorFlow内部的日志输出整合,避免出现多日志体系混乱的问题,在分布式训练、模型导出等场景下兼容性更好。- 如果需要将日志写入文件,同样可以给
tf_logger添加FileHandler,和标准logging的用法完全一致。
内容的提问来源于stack exchange,提问作者YW P Kwon
相关产品推荐
相关产品推荐

