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

    文章

    587

    浏览量

    25920
  • 日志
    +关注

    关注

    0

    文章

    145

    浏览量

    11028
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89600
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    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

    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 1169次阅读
    详解journalctl<b class='flag-5'>日志</b>管理

    跟老齐学Python:从入门精通

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

    基于RV1126开发板限制系统日志大小教程

    无论管理什么系统,对日志文件的监控、调用、管理都是其中重要的一部分。服务器问题的解决都是从查看系统(错误)日志开始的。系统日志是记录系统硬件状况、内核动作、软件启动、用户动作等各项信息
    的头像 发表于 04-16 11:18 600次阅读
    基于RV1126开发板限制系统<b class='flag-5'>日志</b>大小教程

    python入门圣经-高清电子书(建议下载)

    和Pygal 等强大的Python 库和工具介绍,以及列表、字典、if 语句、类、文件与异常、代码测试等内容; 第二部分将理论付诸实践,讲解如何开发三个项目,包括简单的Python
    发表于 04-10 16:53

    创建了用于OpenVINO™推理的自定义C++和Python代码,从C++代码中获得的结果与Python代码不同是为什么?

    创建了用于OpenVINO™推理的自定义 C++ 和 Python* 代码。 在两个推理过程中使用相同的图像和模型。 从 C++ 代码中获得的结果与 Python*
    发表于 03-06 06:22

    如何将python文件导入ROS系统中

    本文通过使用myCobot机械臂进行QR码视觉追踪的实践案例分析,介绍如何将 python 文件导入 ROS 系统中。
    的头像 发表于 02-11 11:08 1208次阅读
    如何将<b class='flag-5'>python</b><b class='flag-5'>文件</b>导入<b class='flag-5'>到</b>ROS系统中

    Linux实时查看日志的四种命令详解

    如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文件更改或不断更新时输出文件的内容。在Linux中实时显示文件内容
    的头像 发表于 01-13 10:45 3984次阅读
    Linux实时查看<b class='flag-5'>日志</b>的四种命令详解

    Wine开发系列——如何使用Wine日志调试问题

      输出调试日志是调试程序的一种常见方法,尤其是处理那些难以捉摸的多线程错误、随机崩溃等问题时。 通过在合适的位置输出调试日志,可以帮助我们更快地定位问题所在。 对于不熟悉的代码,经常打日志
    的头像 发表于 01-06 11:29 1827次阅读