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

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

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

Python寫入到日志文件完整代碼

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

寫入到日志文件

上面我們說的是將日志打印到控制臺(tái)中,但是我們Python代碼寫完并且在運(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())

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


func_name()

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

圖片

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

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

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

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

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

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

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

    關(guān)注

    1

    文章

    551

    瀏覽量

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

    關(guān)注

    0

    文章

    129

    瀏覽量

    10593
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84078
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PDF文件批量打印源代碼

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

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

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

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

    python軟件怎么運(yùn)行代碼

    Python是一種高級(jí)編程語言,它被廣泛用于開發(fā)各種類型的應(yīng)用程序,從簡單的腳本復(fù)雜的網(wǎng)絡(luò)應(yīng)用和機(jī)器學(xué)習(xí)模型。要運(yùn)行Python代碼,您需要一個(gè)P
    的頭像 發(fā)表于 11-28 16:02 ?745次閱讀

    python中如何保存文件

    Python中,可以使用多種方式來保存文件。以下是一些常見的方法: 使用內(nèi)置的open()函數(shù):open()函數(shù)用于打開文件并返回一個(gè)文件對(duì)象,可以在此對(duì)象上執(zhí)行讀取和
    的頭像 發(fā)表于 11-24 09:32 ?973次閱讀

    python代碼寫完后點(diǎn)哪個(gè)運(yùn)行

    當(dāng)你完成了編寫Python代碼后,你可以選擇多種方式來運(yùn)行它。下面是幾種常見的運(yùn)行代碼的方式: Python解釋器:Python是一種解釋型
    的頭像 發(fā)表于 11-24 09:28 ?2806次閱讀

    kernel日志寫入logd介紹

    kernel日志寫入logd介紹 通過logcat命令獲取kernel日志比較特殊,故作為一個(gè)例子進(jìn)行梳理。 2.3.1 整體流程 2.3.2 命令打印kernel日志 通過logca
    的頭像 發(fā)表于 11-23 17:11 ?480次閱讀
    kernel<b class='flag-5'>日志</b><b class='flag-5'>寫入</b>logd介紹

    python怎樣運(yùn)行代碼

    討論Python代碼的運(yùn)行方式,包括解釋器、交互式環(huán)境和命令行。 Python代碼可以通過兩種主要的方式運(yùn)行:解釋執(zhí)行和編譯執(zhí)行。解釋執(zhí)行是指將源
    的頭像 發(fā)表于 11-22 10:31 ?987次閱讀

    用14行Python代碼創(chuàng)建Switch自制程序

    PyNX的Zip版本的內(nèi)容復(fù)制SD卡的/switch目錄下 3. 編輯main.py文件, 將你的代碼邏輯寫入文件中 4. 將SD卡插入
    的頭像 發(fā)表于 11-02 14:41 ?443次閱讀

    如何應(yīng)用Python解決5個(gè)常見運(yùn)維問題?

    解析日志文件并提取有用信息是運(yùn)維工程師經(jīng)常要進(jìn)行的任務(wù)之一。使用 Python 腳本可以方便地實(shí)現(xiàn)這一操作。 在 Python 中,可以使用第三方庫 regex 來解析
    發(fā)表于 11-02 10:06 ?247次閱讀

    如何通過阿里云日志服務(wù)搭建一套通過Python上傳日志的監(jiān)控服務(wù)

    時(shí)間,因此如果能使用市面上現(xiàn)成的系統(tǒng)會(huì)很方便。 本文將教你如何通過阿里云日志服務(wù)搭建一套通過Python上傳日志、配置日志告警的監(jiān)控服務(wù)。 1.準(zhǔn)備 開始之前,你要確保
    的頭像 發(fā)表于 10-21 14:43 ?769次閱讀
    如何通過阿里云<b class='flag-5'>日志</b>服務(wù)搭建一套通過<b class='flag-5'>Python</b>上傳<b class='flag-5'>日志</b>的監(jiān)控服務(wù)

    事務(wù)性日志結(jié)構(gòu)文件系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)

    本文發(fā)表于FAST 2022,探討日志結(jié)構(gòu)文件系統(tǒng)層面的事務(wù)支持。本文主要對(duì)F2FS進(jìn)行了支持事務(wù)的修改,實(shí)現(xiàn)了支持ACID事務(wù)特性的文件系統(tǒng)層面支持。本文通過實(shí)驗(yàn)測試了SQLite和ROCKSDB
    的頭像 發(fā)表于 10-16 16:01 ?552次閱讀
    事務(wù)性<b class='flag-5'>日志</b>結(jié)構(gòu)<b class='flag-5'>文件</b>系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)

    如何用Python自動(dòng)上傳文件百度網(wǎng)盤

    要使用Python自動(dòng)上傳文件百度網(wǎng)盤,你可以使用bypy開源模塊,它提供了豐富的功能,包括顯示文件列表、同步目錄、文件上傳。 僅支持 /
    的頭像 發(fā)表于 10-16 11:28 ?964次閱讀
    如何用<b class='flag-5'>Python</b>自動(dòng)上傳<b class='flag-5'>文件</b><b class='flag-5'>到</b>百度網(wǎng)盤

    如何使用Python讀取寫入Word文件

    01 準(zhǔn)備 Python 是一種通用編程語言,也可以用于處理 Microsoft Word 文件。在本文中,我將向你介紹如何使用 Pythonpython-docx 庫讀取、
    的頭像 發(fā)表于 09-27 17:03 ?1868次閱讀