python将日志写入文件(超详细)

python将日志写入文件(超详细)

1、需求

  • 我们在训练模型的时候,有时候需要将训练日志输出到一个文件中,方便随时查看训练日志。

训练模型时候,训练日志在控制台展示,关闭控制台后日志会消失。这时,我们需要将控制台中的训练日志信息输出到一个指定文件中,方便我们随时查看。

将控制台中的日志信息输入到当前目录下的application.log文件中

在这里插入图片描述
在这里插入图片描述

2、方法:python logging模块

logging 是Python中非常强大且灵活的库,用于记录和跟踪应用程序运行时发生的事件。在Python中,使用 logging 模块可以写入日志信息到指定文件。

2.1 basicConfig() 快速配置

  • 导入logging模块
  • 设置全局的日志格式和级别
  • 获取logger
  • 创建文件处理器,指定日志文件和日志级别(局部)
  • 添加文件处理器到logger
import logging
import warnings# 忽略所有 UserWarning 警告
warnings.filterwarnings("ignore", category=UserWarning)# 1、设置全局的日志格式和级别
logging.basicConfig(format='%(asctime)s - %(levelname)s - %(name)s - %(message)s',datefmt='%m/%d/%Y %H:%M:%S',level=logging.INFO)# 2、获取logger (给日志器起个名字 "__name__")
logger = logging.getLogger(__name__)# __name__内置变量模块名称,轻松地识别出哪个模块产生了哪些日志消息(主程序模块)# 3、创建文件处理器,指定日志文件和日志级别(局部)---文件输出FileHandle(输出到指定文件)
file_handler = logging.FileHandler('application.log') #指定日志文件名application.log,默认在当前目录下创建
file_handler.setLevel(logging.INFO) # 设置日志级别(只输出对应级别INFO的日志信息)
# 设置日志格式
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(name)s - %(message)s', '%m/%d/%Y %H:%M:%S')) # 4、添加文件处理器到logger
logger.addHandler(file_handler)# 训练模型的代码
epoch = 7  
# 记录日志信息
logger.info("Get better performance at epoch {}".format(epoch))# 在主类中编写日志代码
# 判断当前程序是否为主程序,确保 main() 函数只在直接运行该Python文件时执行,如果文件被其他模块导入,则不执行 main()
# 主程序内置变量 __name__
if __name__ == "__main__":main()

2.2 查看application.log日志文件

在这里插入图片描述

2.3、logging知识

  • Loggers:应用程序中使用的接口,用于发送日志消息。它们来自logging.getLogger(name),name是用于标识logger源的字符串
  • Handlers:用于配置日志处理的目的地,如文件、控制台等。常用的有StreamHandler(控制台输出)和FileHandle(文件输出)
  • Formatters:定义最终输出中日志记录的布局
  • Filters:提供更细粒度的工具来进一步控制哪些日志记录将被输出

2.4、日志级别

debug,info,warning,error,critical
  • DEBUG:详细信息,通常只有在诊断问题时才感兴趣。
  • INFO:证明事情按预期工作(最常用)
  • WARNING:某些还不是错误的事情的指示,但是应该注意的。
  • ERROR:由于某些更严重的问题,软件已不能执行一些功能了
  • CRITICAL:严重错误,表明程序已不能继续运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625880.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32之HAL开发——CubeMX配置串行Flash文件系统

配置流程 在开始配置FATFS前,需要提前配置好RCC的时钟,以及时钟的频率,另外还要配置好Debug选项(选择串行) 选项介绍 文件系统适用于SD卡,Disk磁盘等,需要我们将对应的驱动打开才可以使用。 …

STM32H7 QSPI的寄存器和功能介绍

目录 概述 1 认识QSPI 1.1 QSPI介绍 1.2 QUADSPI 主要特性 2 QUADSPI 功能说明 2.1 双闪存模式禁止 2.2 双闪存模式使能 3 QUADSPI 的用法 3.1 间接模式的操作步骤 3.1.1 QUADSPI 间接模式时配置帧模式 3.1.2 写控制寄存器 (QUADSPI_CR) 3.1.3 写通信配置寄存器 (…

西北新作 | 咸阳金域华庭售楼处落成

优积科技再拓新品,在历史悠久的陕西省咸阳市核心区域,成功打造了一座创新模块化设计的售楼处。 咸阳,这座镶嵌于八百里秦川温润腹地的城市,坐拥渭水潺潺南流,峻嶒嵯峨的嵕山巍然北峙,因其南北皆得山水之阳刚之美&…

MATLAB绘制圆锥曲线:抛物线,双曲线,椭圆

MATLAB绘制圆锥曲线:抛物线,双曲线,椭圆 clc;close all;clear all;warning off;%清除变量x linspace(-10, 10, 1000); % 创建一个x值的向量,范围从-10到10,共1000个点 y x.^2; % 计算每个x值对应的y值% 使用plot函数绘制图形 figure; % 创建一个新的图…

springboot2集成东方通tongweb嵌入式版

由于最近项目需要国产化信创改造,引入东方通tongweb 联系东方通厂家 ,将依赖导入到maven仓库,并获取嵌入式版license文件修改pom.xml,引入依赖,注意springboot版本,这里以springboot2举例 首先移除springb…

SpringBoot+Vue多模块项目宝塔部署(保姆级教程)

目录 服务器推荐 安装宝塔 进入宝塔 安装软件 安装 nginx ​编辑 安装mysql 安装java 配置数据库 启动模块下加打包插件 修改配置文件 添加java项目 放行端口 前端访问 本篇博文将向各位详细的介绍项目部署到服务器的详细过程,以及我配置过程中遇到的…

向量数据库与图数据库:理解它们的区别

作者:Elastic Platform Team 大数据管理不仅仅是尽可能存储更多的数据。它关乎能够识别有意义的见解、发现隐藏的模式,并做出明智的决策。这种对高级分析的追求一直是数据建模和存储解决方案创新的驱动力,远远超出了传统关系数据库。 这些创…

蓝桥杯第十五届javab组个人总结

javab组 额今天早上打完了得对自己此次比赛做总结,无论是明年还参赛还是研究生蓝桥杯,体验感有点差,第一题其实一开始想手算但怕进位导致不准确还是让代码跑了,但跑第202420242024个数(被20和24整除)一直把…

Aurora 协议学习理解与应用——Aurora 64B66B协议学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Aurora 协议学习理解与应用——Aurora 64B66B协议学习 概述数据发送和接收帧传输过程链路层帧描绘64B/66B 编码多lane传输 帧接收过程Control Block Stripping 控制块剥离多l…

C语言学习笔记之指针(二)

指针基础知识:C语言学习笔记之指针(一)-CSDN博客 目录 字符指针 代码分析 指针数组 数组指针 函数指针 代码分析(出自《C陷阱和缺陷》) 函数指针数组 指向函数指针数组的指针 回调函数 qsort() 字符指针 一…

使用UDP实现TCP的功能,会带来什么好处?

比较孤陋寡闻,只知道QUIC TCPQUIC握手延迟TCP需要三次握手TLS握手三次握手TLS握手放在一起,实现0RTT头阻塞问题TCP丢失保文,会影响所有的应用数据包基于UDP封装传输层Stream,Stream内部保序,Stream之间不存在相互影响…

算法|基础算法|高精度算法

基础算法|位运算 1.高精度加法 2.高精度减法 3.高精度乘法 4.高精度除法 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 高精度加法 …