0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python写入到日志文件完整代码

麦辣鸡腿堡 来源:Python都知道 作者:了不起 2023-10-07 11:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

写入到日志文件

上面我们说的是将日志打印到控制台中,但是我们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 可能无法建立新连接。表现为:
    的头像 发表于 04-16 15:18 127次阅读

    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、多级日志分类与条件输出机制。通过集成该技术,开发者可在不干扰业务逻辑的前提下,全面掌握模组的执行状态与异常行为。 一、本文讨论的边界
    的头像 发表于 01-14 15:32 229次阅读
    模组<b class='flag-5'>日志</b>功能技术概览

    RT-Thread ULOG: 创建多个文件后端并保存不同日志方法 | 技术集结

    日志都看不到。这时候就很有必要把日志文件保存在文件系统中了。RTT软件包中ULOG_FILE这个包可以实现日志
    的头像 发表于 12-15 19:22 5189次阅读
    RT-Thread ULOG: 创建多个<b class='flag-5'>文件</b>后端并保存不同<b class='flag-5'>日志</b>方法 | 技术集结

    Termux中调试圣诞树Python代码

    Python文件(比如命名为christmas_tree.py): nano christmas_tree.py 粘贴下面的圣诞树立例代码(健康版): # 圣诞快乐 - 温馨圣诞树打印 print
    发表于 12-09 09:02

    电能质量在线监测装置数据日志能加密存储吗?

    电能质量在线监测装置的数据日志 可以加密存储 ,且已成为工业级与电力系统合规应用的标准配置。加密机制通常采用 分级加密策略 ,并结合硬件安全模块保障密钥安全,确保日志数据的完整性与保密性。 一、
    的头像 发表于 12-05 10:16 735次阅读
    电能质量在线监测装置数据<b class='flag-5'>日志</b>能加密存储吗?

    使用ulog 写入日志文件系统,无法使用cat命令读取文件内容怎么解决?

    1.我使用ulog+littlefs写入日志日志正常写入,但是没法使用cat指令读取文件内容失败,必须关掉ulog,才能读取
    发表于 10-13 06:12

    使用littlefs存储ulog日志,然后读日志文件会出错,为什么?

    使用littlefs存储ulog日志,然后通过命令读取日志文件,或者通过API接口读取或拷贝日志文件,都会导致线程卡死,尝试了多种方法都不行
    发表于 09-29 06:14

    ulog无法输出日志保存到文件,为什么?

    想把日志输出到文件,显示初始化成功了,可是没有输出到文件
    发表于 09-23 07:47

    文件系统的文件怎么循环覆盖的写入数据?

    请教一个文件系统数据写入的问题。 比如我新建一个文件,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

    详解journalctl日志管理

    systemd 提供了自己的日志系统(logging system),称为 journal。使用 systemd 日志,无需额外安装日志服务(syslog)。
    的头像 发表于 06-05 17:22 1897次阅读
    详解journalctl<b class='flag-5'>日志</b>管理

    跟老齐学Python:从入门精通

    础的学习者介绍一门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插了很多貌似与Python 编程无关,但与学习者未来程序员职业生涯有关的内容。 获取完整文档资料可下载附件哦!!!! 如果内容有帮助可以关注、点赞、评论支持一下哦~
    发表于 06-03 16:10