logger使用,解决中文乱码问题,重复缓存问题

2024-05-16 09:28

本文主要是介绍logger使用,解决中文乱码问题,重复缓存问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目的

在模型训练过程中,想把控制台内容输出的内容缓存起来,以便后期检查使用,就用起了logger。用的时候遇到过中文乱码问题以及重复缓存问题(即后面的logger对象将前面的logger对象缓存内容也缓存下来了)。

解决方法:

  1. 设置编码格式(encoding=“utf-8”
  2. 写了清楚logger对象的函数。

在 Python 中使用 logging 模块时,如果实例化了多个 loggers 并且日志处理器没有被正确地移除,可能会导致日志数据重复。

代码

'''
Descripttion: 
Result: 
Author: Philo
Date: 2023-10-10 10:04:28
LastEditors: Philo
LastEditTime: 2024-05-15 20:53:44
'''
import logging
import osdef get_logger(log_name, verbosity=1):level_dict = {0: logging.DEBUG, 1: logging.INFO, 2: logging.WARNING} # 创建了一个字典,用于将传入的 verbosity 参数转换为相应的日志记录级别。formatter = logging.Formatter("[%(asctime)s][%(filename)s] %(message)s"   # 创建了一个格式化对象,用于指定日志记录的格式,其中包含了记录时间、文件名和消息内容。)logger = logging.getLogger(log_name)  # 获取一个 Logger 对象logger.setLevel(level_dict[verbosity]) # 设置记录器的记录级别,根据传入的 verbosity 参数选择相应的记录级别。fh = logging.FileHandler(log_name, "w", encoding="utf-8") # 创建了一个文件处理器对象,用于将日志记录写入到指定的文件中,以追加的方式写入。fh.setFormatter(formatter) # 为文件处理器对象设置了格式化器,指定了写入到文件中的日志记录格式。logger.addHandler(fh) # 将文件处理器对象添加到记录器中,以便将日志记录写入到文件中。return logger # 返回创建的记录器对象,以便在其他地方使用。def clear_loggers():for handler in logging.root.handlers[:]:logging.root.removeHandler(handler)if __name__ == "__main__":# 设置日志文件路径和记录级别log_filename = "example.log"log_verbosity = 1  # 0: DEBUG, 1: INFO, 2: WARNING# 创建记录器logger = get_logger(log_filename)# 记录不同级别的消息logger.debug("这是一条调试信息")logger.info("这是一条普通信息")logger.warning("这是一条警告信息")logger.error("这是一条错误信息")logger.critical("这是一条严重错误信息")clear_loggers()

输出结果:
在这里插入图片描述
代码训练过程中使用:
在这里插入图片描述

这篇关于logger使用,解决中文乱码问题,重复缓存问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/994513

相关文章

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam