0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python寫(xiě)入到日志文件完整代碼

麥辣雞腿堡 ? 來(lái)源:Python都知道 ? 作者:了不起 ? 2023-10-07 11:50 ? 次閱讀

寫(xiě)入到日志文件

上面我們說(shuō)的是將日志打印到控制臺(tái)中,但是我們Python代碼寫(xiě)完并且在運(yùn)行當(dāng)中后,我們就不可能這樣玩了,所以我們需要將日志保存到一個(gè)日志文件中

完整代碼如下:

import coloredlogs
import logging


def func_name():
    # 創(chuàng)建文件handler
    file_handler = logging.FileHandler('log_file.log')

    # 設(shè)置日志格式
    formatter = logging.Formatter('%(asctime)s - %(module)s - %(funcName)s - %(levelname)s - %(message)s')
    file_handler.setFormatter(formatter)

    # 安裝coloredlogs并設(shè)置級(jí)別
    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)

    # 移除默認(rèn)StreamHandler
    logger.removeHandler(logging.StreamHandler())

    # 測(cè)試輸出日志
    logger.debug('debug message')
    logger.info('info message')
    logger.error('error message')
    logger.warning('warning message')


func_name()

打開(kāi)我們log_file.log文件后,就可以看到我們生成的日志信息

圖片

可以看到我們生成的日志文件中不同級(jí)別的日志還是使用的是一樣的顏色。那這是為什么呢?

其實(shí)coloredlogs 庫(kù)只是在終端輸出時(shí)給日志添加了顏色,但寫(xiě)入文件時(shí)colors并不能保留。

這是因?yàn)榻K端輸出和文件輸出使用的是不同的handler:

  • 終端輸出使用的是StreamHandler,可以 interpreter 處理ANSI色彩編碼顯示顏色。
  • 文件輸出使用的是FileHandler,寫(xiě)入的僅是純文本,無(wú)法保存ANSI編碼的顏色信息。

ANSI色彩編碼只有在支持其的終端才能渲染為顏色,一旦寫(xiě)入文件就會(huì)失去這些編碼信息。所以使用coloredlogs時(shí),日志文件內(nèi)實(shí)際保存的是未著色的原始文本。

如果想要文件中也保存顏色信息,可以考慮使用支持ANSI色彩的文件格式,比如HTML。然后通過(guò)logging模塊支持的HTML Formatter輸出彩色日志到HTML文件中,不過(guò)這種情況下就失去了純文本文件的可閱讀性。
綜上,coloredlogs只是在終端美化日志展示效果,文件輸出不保存顏色是正常情況。如果必須存儲(chǔ)顏色,可以輸出為HTML等格式,但復(fù)雜度會(huì)增加。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    566

    瀏覽量

    24757
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    10650
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84727
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    nginx日志配置方法

    access_log用來(lái)定義日志級(jí)別,日志位置。
    的頭像 發(fā)表于 10-24 17:43 ?235次閱讀

    日志篇:模組日志總體介紹

    的各種故障進(jìn)行分析。 二、4G模組日志的幾種類(lèi)型界 4G 模組的日志有兩種類(lèi)型: 業(yè)務(wù)日志和底層日志。業(yè)務(wù)日志是指在用模組的客戶(hù)
    的頭像 發(fā)表于 10-24 07:16 ?197次閱讀
    <b class='flag-5'>日志</b>篇:模組<b class='flag-5'>日志</b>總體介紹

    hex文件如何查看原c語(yǔ)言代碼

    直接將 .hex 文件轉(zhuǎn)換回原始的 C 語(yǔ)言代碼是不可能的,因?yàn)?.hex 文件是二進(jìn)制文件,它包含了單片機(jī)程序編譯后的機(jī)器碼,這些機(jī)器碼與原始的 C 語(yǔ)言
    的頭像 發(fā)表于 09-02 10:37 ?2382次閱讀

    PDF文件批量打印源代碼

    壓縮包中包含可批量打印PDF文件Python代碼,可以借助PYcharm工具執(zhí)行,實(shí)現(xiàn)多PDF文件同時(shí)打印。
    發(fā)表于 08-08 14:26 ?0次下載

    日志框架簡(jiǎn)介-Slf4j+Logback入門(mén)實(shí)踐

    結(jié)果不受日志的有無(wú)影響,但沒(méi)有日志的應(yīng)用程序是不完整的,甚至可以說(shuō)是有缺陷的。優(yōu)秀的日志系統(tǒng)可以 記錄操作軌跡 、 監(jiān)控系統(tǒng)運(yùn)行狀態(tài) 和 解決系統(tǒng)故障 。 Java
    的頭像 發(fā)表于 07-30 10:00 ?1149次閱讀
    <b class='flag-5'>日志</b>框架簡(jiǎn)介-Slf4j+Logback入門(mén)實(shí)踐

    如何實(shí)現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開(kāi)蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會(huì)看到一些用 Python 實(shí)現(xiàn)文件復(fù)制的特殊
    的頭像 發(fā)表于 07-18 14:53 ?426次閱讀

    鐵威馬教程 如何收集NAS的日志

    一:使用Putty等工具登錄NAS命令行終端。 步驟二:修改日志存儲(chǔ)的位置 2.1.執(zhí)行以下命令: ? 代碼
    的頭像 發(fā)表于 07-16 18:02 ?641次閱讀
    鐵威馬教程 如何收集NAS的<b class='flag-5'>日志</b>

    python解析netflow數(shù)據(jù)csv的流程詳解

    本文主要講解了linux下通過(guò)tcpdump抓取netflow數(shù)據(jù)包,并將其導(dǎo)入wireshark進(jìn)行解析,然后通過(guò)wireshark導(dǎo)出數(shù)據(jù)為json文件,再通過(guò)python腳本將其解析為csv
    的頭像 發(fā)表于 05-01 11:18 ?680次閱讀
    <b class='flag-5'>python</b>解析netflow數(shù)據(jù)<b class='flag-5'>到</b>csv的流程詳解

    【嵌入式SD NAND】基于FATFS/Littlefs文件系統(tǒng)的日志框架實(shí)現(xiàn)

    文章目錄 【嵌入式】基于FATFS/Littlefs文件系統(tǒng)的日志框架實(shí)現(xiàn) 1. 概述 2. 設(shè)計(jì)概要 3. 設(shè)計(jì)實(shí)現(xiàn) 3.1 初始化 `init` 3.2 日志寫(xiě)入 `write`
    的頭像 發(fā)表于 03-14 18:13 ?1069次閱讀
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件</b>系統(tǒng)的<b class='flag-5'>日志</b>框架實(shí)現(xiàn)

    【嵌入式SD NAND】基于FATFS/Littlefs文件系統(tǒng)的日志框架實(shí)現(xiàn)

    文章目錄 【嵌入式】基于FATFS/Littlefs文件系統(tǒng)的日志框架實(shí)現(xiàn) 概述 設(shè)計(jì)概要 設(shè)計(jì)實(shí)現(xiàn) 3.1 初始化 init 3.2 日志寫(xiě)入 write 3.3
    發(fā)表于 03-14 18:12

    【嵌入式SD NAND】基于FATFS/Littlefs文件系統(tǒng)的日志框架實(shí)現(xiàn)

    文章目錄【嵌入式】基于FATFS/Littlefs文件系統(tǒng)的日志框架實(shí)現(xiàn)1.概述2.設(shè)計(jì)概要3.設(shè)計(jì)實(shí)現(xiàn)3.1初始化`init`3.2日志寫(xiě)入`write`3.3
    的頭像 發(fā)表于 03-14 18:12 ?1164次閱讀
    【嵌入式SD NAND】基于FATFS/Littlefs<b class='flag-5'>文件</b>系統(tǒng)的<b class='flag-5'>日志</b>框架實(shí)現(xiàn)

    python中open函數(shù)的用法詳解

    python中open函數(shù)的用法詳解 Python中的open()函數(shù)用于打開(kāi)文件。它接受文件名和模式作為參數(shù),并返回一個(gè)文件對(duì)象。
    的頭像 發(fā)表于 01-30 15:31 ?2140次閱讀

    Python智能家居系統(tǒng)代碼介紹

    Python智能家居系統(tǒng)是一種基于Python編程語(yǔ)言開(kāi)發(fā)的智能家居控制系統(tǒng),在現(xiàn)代家庭中得到了越來(lái)越廣泛的應(yīng)用。本文將詳細(xì)介紹Python智能家居系統(tǒng)的代碼實(shí)現(xiàn),包括系統(tǒng)的結(jié)構(gòu)與功能
    的頭像 發(fā)表于 01-25 09:46 ?1376次閱讀

    單片機(jī)斷電記憶日志 多串口助手波形圖像彩色日志 Stm32嵌入式FLASH保存日志管理工具

    )可以使用任何內(nèi)碼進(jìn)行記錄。 日志緩沖(Log Buffer)可以傳送陣列緩沖。 計(jì)時(shí)可以根據(jù)前一條日志的Tick,計(jì)算出精確1微秒的用時(shí)。 CloudLog提供了多種日志等級(jí),包括
    發(fā)表于 01-19 11:28

    常用的大日志文件查詢(xún)命令詳解

    最近需要查詢(xún)大日志文件的時(shí)候,每次打開(kāi)vim,cat之類(lèi)的都會(huì)卡死,但是需要查看符合條件的共有多少行數(shù)據(jù),這顆愁死我了,下面列出一些常用的匹配查詢(xún)命令。
    的頭像 發(fā)表于 01-02 11:27 ?932次閱讀