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

    文章

    571

    浏览量

    24848
  • 日志
    +关注

    关注

    0

    文章

    139

    浏览量

    10690
  • python
    +关注

    关注

    56

    文章

    4811

    浏览量

    85103
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    nginx日志配置方法

    access_log用来定义日志级别,日志位置。
    的头像 发表于 10-24 17:43 282次阅读

    日志篇:模组日志总体介绍

    的各种故障进行分析。 二、4G模组日志的几种类型界 4G 模组的日志有两种类型: 业务日志和底层日志。业务日志是指在用模组的客户
    的头像 发表于 10-24 07:16 271次阅读
    <b class='flag-5'>日志</b>篇:模组<b class='flag-5'>日志</b>总体介绍

    hex文件如何查看原c语言代码

    直接将 .hex 文件转换回原始的 C 语言代码是不可能的,因为 .hex 文件是二进制文件,它包含了单片机程序编译后的机器码,这些机器码与原始的 C 语言
    的头像 发表于 09-02 10:37 2910次阅读

    linux日志管理之journalctl命令

    journalctl 用来查询 systemd-journald 服务收集日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。
    的头像 发表于 08-14 18:18 2893次阅读
    linux<b class='flag-5'>日志</b>管理之journalctl命令

    PDF文件批量打印源代码

    压缩包中包含可批量打印PDF文件Python代码,可以借助PYcharm工具执行,实现多PDF文件同时打印。
    发表于 08-08 14:26 0次下载

    日志框架简介-Slf4j+Logback入门实践

    结果不受日志的有无影响,但没有日志的应用程序是不完整的,甚至可以说是有缺陷的。优秀的日志系统可以 记录操作轨迹 、 监控系统运行状态 和 解决系统故障 。 Java
    的头像 发表于 07-30 10:00 1242次阅读
    <b class='flag-5'>日志</b>框架简介-Slf4j+Logback入门实践

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些用 Python 实现文件复制的特殊
    的头像 发表于 07-18 14:53 493次阅读

    铁威马教程 如何收集NAS的日志

    一:使用Putty等工具登录NAS命令行终端。 步骤二:修改日志存储的位置 2.1.执行以下命令:   代码
    的头像 发表于 07-16 18:02 708次阅读
    铁威马教程 如何收集NAS的<b class='flag-5'>日志</b>

    python解析netflow数据csv的流程详解

    本文主要讲解了linux下通过tcpdump抓取netflow数据包,并将其导入wireshark进行解析,然后通过wireshark导出数据为json文件,再通过python脚本将其解析为csv
    的头像 发表于 05-01 11:18 751次阅读
    <b class='flag-5'>python</b>解析netflow数据<b class='flag-5'>到</b>csv的流程详解

    【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现

    文章目录 【嵌入式】基于FATFS/Littlefs文件系统的日志框架实现 1. 概述 2. 设计概要 3. 设计实现 3.1 初始化 `init` 3.2 日志写入 `write`
    的头像 发表于 03-14 18:13 1132次阅读
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件</b>系统的<b class='flag-5'>日志</b>框架实现

    【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现

    文章目录 【嵌入式】基于FATFS/Littlefs文件系统的日志框架实现 概述 设计概要 设计实现 3.1 初始化 init 3.2 日志写入 write 3.3
    发表于 03-14 18:12

    【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现

    文章目录【嵌入式】基于FATFS/Littlefs文件系统的日志框架实现1.概述2.设计概要3.设计实现3.1初始化`init`3.2日志写入`write`3.3
    的头像 发表于 03-14 18:12 1251次阅读
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件</b>系统的<b class='flag-5'>日志</b>框架实现