写入到日志文件
上面我们说的是将日志打印到控制台中,但是我们Python代码写完并且在运行当中后,我们就不可能这样玩了,所以我们需要将日志保存到一个日志文件中
完整代码如下:
import coloredlogs
import logging
def func_name():
# 创建文件handler
file_handler = logging.FileHandler('log_file.log')
# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(module)s - %(funcName)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 安装coloredlogs并设置级别
level_styles = coloredlogs.DEFAULT_LEVEL_STYLES.copy()
coloredlogs.install(level="DEBUG", level_styles=level_styles,
fmt='%(asctime)s - %(module)s - %(funcName)s - %(levelname)s - %(message)s')
# 获取logger 并添加文件handler
logger = logging.getLogger()
logger.addHandler(file_handler)
# 移除默认StreamHandler
logger.removeHandler(logging.StreamHandler())
# 测试输出日志
logger.debug('debug message')
logger.info('info message')
logger.error('error message')
logger.warning('warning message')
func_name()
打开我们log_file.log文件后,就可以看到我们生成的日志信息

可以看到我们生成的日志文件中不同级别的日志还是使用的是一样的颜色。那这是为什么呢?
其实coloredlogs 库只是在终端输出时给日志添加了颜色,但写入文件时colors并不能保留。
这是因为终端输出和文件输出使用的是不同的handler:
- 终端输出使用的是StreamHandler,可以 interpreter 处理ANSI色彩编码显示颜色。
- 文件输出使用的是FileHandler,写入的仅是纯文本,无法保存ANSI编码的颜色信息。
ANSI色彩编码只有在支持其的终端才能渲染为颜色,一旦写入文件就会失去这些编码信息。所以使用coloredlogs时,日志文件内实际保存的是未着色的原始文本。
如果想要文件中也保存颜色信息,可以考虑使用支持ANSI色彩的文件格式,比如HTML。然后通过logging模块支持的HTML Formatter输出彩色日志到HTML文件中,不过这种情况下就失去了纯文本文件的可阅读性。
综上,coloredlogs只是在终端美化日志展示效果,文件输出不保存颜色是正常情况。如果必须存储颜色,可以输出为HTML等格式,但复杂度会增加。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
文件
+关注
关注
1文章
597浏览量
26113 -
日志
+关注
关注
0文章
149浏览量
11095 -
python
+关注
关注
58文章
4883浏览量
90295
发布评论请先 登录
相关推荐
热点推荐
Linux服务器磁盘管理机制和清理策略
磁盘空间耗尽是服务器运维中最常见的问题之一。当磁盘写满后,应用无法写入日志、无法创建新文件、无法写入数据、数据库无法完成刷盘、SSH 可能无法建立新连接。表现为:
S32DS无法调用ghs来编译asm代码,为什么?
将ghs集成到s32ds中,并使用S32ds IDE构建项目,如您所见,我已经导入了asm文件,但是日志显示S32DS无法调用ghs来编译asm代码,我不知道为什么。我需要一些帮助。
发表于 04-08 06:36
[VirtualLab] 使用Python运行VirtualLab Fusion光学仿真
Python编辑器的用户:
请安装保存在文件requirements.txt中的所有软件包。最常见的方法之一是pip安装:
pip install -r requirements.txt
配置路径
在VirtualLab Fusion中定义光学系统
查看
发表于 03-31 09:39
模组日志功能技术概览
模组日志功能技术方案以低侵入、高可用为原则,提供统一的日志API、多级日志分类与条件输出机制。通过集成该技术,开发者可在不干扰业务逻辑的前提下,全面掌握模组的执行状态与异常行为。 一、本文讨论的边界
Termux中调试圣诞树Python代码
Python文件(比如命名为christmas_tree.py):
nano christmas_tree.py
粘贴下面的圣诞树立例代码(健康版):
# 圣诞快乐 - 温馨圣诞树打印
print
发表于 12-09 09:02
电能质量在线监测装置数据日志能加密存储吗?
电能质量在线监测装置的数据日志 可以加密存储 ,且已成为工业级与电力系统合规应用的标准配置。加密机制通常采用 分级加密策略 ,并结合硬件安全模块保障密钥安全,确保日志数据的完整性与保密性。 一、
使用ulog 写入日志到文件系统,无法使用cat命令读取文件内容怎么解决?
1.我使用ulog+littlefs写入日志,日志正常写入,但是没法使用cat指令读取文件内容失败,必须关掉ulog,才能读取
发表于 10-13 06:12
使用littlefs存储ulog日志,然后读日志文件会出错,为什么?
使用littlefs存储ulog日志,然后通过命令读取日志文件,或者通过API接口读取或拷贝日志文件,都会导致线程卡死,尝试了多种方法都不行
发表于 09-29 06:14
文件系统的文件怎么循环覆盖的写入数据?
请教一个文件系统数据写入的问题。
比如我新建一个文件,test.txt,写入数据超过512KB后,就从头开始写,后面的数据不删除,从头开始覆盖。
比如原来写了1000条数据,然后从头开
发表于 09-22 08:20
termux如何搭建python游戏
Pygame),确保已安装`clang`编译器:`apt install -y clang`
3. 权限问题:若需访问手机文件,安装`termux-setup-storage`并授权存储访问权限。
通过以上步骤,即可在Termux中搭建完整的
发表于 08-29 07:06
python app不能运行怎么解决?
我使用helloword的模板,上传了IG502,但不能运行,请大神帮忙。系统日志如下:sntpc[1226]: ntp request error: 113, No route to host
发表于 08-06 06:27
跟老齐学Python:从入门到精通
础的学习者介绍一门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插了很多貌似与Python 编程无关,但与学习者未来程序员职业生涯有关的内容。
获取完整文档资料可下载附件哦!!!!
如果内容有帮助可以关注、点赞、评论支持一下哦~
发表于 06-03 16:10
Python写入到日志文件完整代码
评论