欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3如何日志同時(shí)輸出到控制臺(tái)和文件

 更新時(shí)間:2023年11月10日 11:09:09   作者:開發(fā)者超屎  
這篇文章主要介紹了Python3如何日志同時(shí)輸出到控制臺(tái)和文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Python3日志同時(shí)輸出到控制臺(tái)和文件

python3中想要將程序的日志打印到文件中,便于后期查看原因。

但是在開發(fā)階段又想讓日志打印到控制臺(tái),這時(shí)候可以用一個(gè)類將其封裝起來,用法就跟java差不多,配置也很簡單。

需要用到python內(nèi)置模塊 logging 和其中的函數(shù)handlers。

直接上代碼

import logging
from logging import handlers
 
 
# 日志輸出
class Logger(object):
    # 日志級(jí)別關(guān)系映射
    level_relations = {
        "debug": logging.DEBUG,
        "info": logging.INFO,
        "warning": logging.WARNING,
        "error": logging.ERROR,
        "critical": logging.CRITICAL
    }
 
    def __init__(self, filename="../log/test.log", level="info", when="D", backupCount=3, fmt="%(asctime)s - %(pathname)s[line:%(lineno)d] - %"
                                                                                              "(levelname)s: %(message)s"):
        # 設(shè)置日志輸出格式
        format_str = logging.Formatter(fmt)
        # 設(shè)置日志在控制臺(tái)輸出
        streamHandler = logging.StreamHandler()
        # 設(shè)置控制臺(tái)中輸出日志格式
        streamHandler.setFormatter(format_str)
        # 設(shè)置日志輸出到文件(指定間隔時(shí)間自動(dòng)生成文件的處理器  --按日生成)
        # filename:日志文件名,interval:時(shí)間間隔,when:間隔的時(shí)間單位, backupCount:備份文件個(gè)數(shù),若超過這個(gè)數(shù)就會(huì)自動(dòng)刪除
        fileHandler = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backupCount, encoding="utf-8")
        # 設(shè)置日志文件中的輸出格式
        fileHandler.setFormatter(format_str)
        # 設(shè)置日志輸出文件
        self.logger = logging.getLogger(filename)
        # 設(shè)置日志級(jí)別
        self.logger.setLevel(self.level_relations.get(level))
        # 將輸出對(duì)象添加到logger中
        self.logger.addHandler(streamHandler)
        self.logger.addHandler(fileHandler)

用法就跟java一樣,創(chuàng)建一個(gè)Logger對(duì)象,通過對(duì)象去操作。

log = Logger(level="debug").logger
    log.debug("debuf")
    log.info("info")
    log.warning("warning")
    log.error("error")

可以在控制臺(tái)中看到如下打印信息:

2019-07-02 21:32:25,553 - E:/python/ryan_py/tsunagaru/logger.py[line:30] - DEBUG: debuf
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:31] - INFO: info
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:32] - WARNING: warning
2019-07-02 21:32:25,626 - E:/python/ryan_py/tsunagaru/logger.py[line:33] - ERROR: error
 
Process finished with exit code 0

同時(shí),還可以看到在父級(jí)同級(jí)的目錄下的/log中創(chuàng)建了一個(gè)名叫test.log的文件。

打開test.log文件,可以看到里面的內(nèi)容跟控制臺(tái)上的輸出內(nèi)容是一致的。

2019-07-02 21:32:25,553 - E:/python/ryan_py/tsunagaru/logger.py[line:30] - DEBUG: debuf
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:31] - INFO: info
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:32] - WARNING: warning
2019-07-02 21:32:25,626 - E:/python/ryan_py/tsunagaru/logger.py[line:33] - ERROR: error

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何使用Selenium實(shí)現(xiàn)簡單的網(wǎng)絡(luò)自動(dòng)化操作指南

    如何使用Selenium實(shí)現(xiàn)簡單的網(wǎng)絡(luò)自動(dòng)化操作指南

    Selenium是一個(gè)用于Web應(yīng)用測(cè)試的工具,Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣,這篇文章主要給大家介紹了關(guān)于如何使用Selenium實(shí)現(xiàn)簡單的網(wǎng)絡(luò)自動(dòng)化操作的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Python如何將PDF拆分成多個(gè)文件(最新推薦)

    Python如何將PDF拆分成多個(gè)文件(最新推薦)

    在 Python 中,你可以使用 PyPDF2 庫來拆分 PDF 文件,以下是一個(gè)簡單的示例,演示如何將一個(gè) PDF 文件拆分為多個(gè)單頁 PDF 文件,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • python中ASCII碼字符與int之間的轉(zhuǎn)換方法

    python中ASCII碼字符與int之間的轉(zhuǎn)換方法

    今天小編就為大家分享一篇python中ASCII碼字符與int之間的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Pandas操作MySQL的方法詳解

    Pandas操作MySQL的方法詳解

    這篇文章主要介紹了如何使用Pandas來操作MySQL數(shù)據(jù)庫。主要是包含查詢MySQL中的數(shù)據(jù),以及如何往數(shù)據(jù)庫中寫入數(shù)據(jù),感興趣的小伙伴可以了解一下
    2022-08-08
  • Python圖像處理之圖像的灰度線性變換

    Python圖像處理之圖像的灰度線性變換

    這篇文章主要介紹了Python圖像處理之圖像的灰度線性變換,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Python Serial串口基本操作(收發(fā)數(shù)據(jù))

    Python Serial串口基本操作(收發(fā)數(shù)據(jù))

    這篇文章主要介紹了Python Serial串口基本操作(收發(fā)數(shù)據(jù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python使用pypdf2實(shí)現(xiàn)pdf文檔解密

    python使用pypdf2實(shí)現(xiàn)pdf文檔解密

    利用pypdf2完成pdf的解密,這里的事例是python3環(huán)境下的,當(dāng)然python2下也可以運(yùn)行,只需要修改名稱即可,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 使用Python通過win32 COM打開Excel并添加Sheet的方法

    使用Python通過win32 COM打開Excel并添加Sheet的方法

    今天小編就為大家分享一篇使用Python通過win32 COM打開Excel并添加Sheet的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python enumerate遍歷數(shù)組示例應(yīng)用

    Python enumerate遍歷數(shù)組示例應(yīng)用

    遍歷數(shù)組的python代碼
    2008-09-09
  • python3調(diào)用c語言代碼的全過程記錄

    python3調(diào)用c語言代碼的全過程記錄

    python調(diào)用c語言代碼的方式十分簡單,只需四步。下面這篇文章就來給大家詳細(xì)介紹了關(guān)于python3如何調(diào)用c語言代碼的相關(guān)資料,需要的朋友可以參考下
    2021-05-05

最新評(píng)論