亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python3如何日志同時輸出到控制臺和文件

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

Python3日志同時輸出到控制臺和文件

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

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

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

直接上代碼

import logging
from logging import handlers
 
 
# 日志輸出
class Logger(object):
    # 日志級別關(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è)置日志在控制臺輸出
        streamHandler = logging.StreamHandler()
        # 設(shè)置控制臺中輸出日志格式
        streamHandler.setFormatter(format_str)
        # 設(shè)置日志輸出到文件(指定間隔時間自動生成文件的處理器  --按日生成)
        # filename:日志文件名,interval:時間間隔,when:間隔的時間單位, backupCount:備份文件個數(shù),若超過這個數(shù)就會自動刪除
        fileHandler = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backupCount, encoding="utf-8")
        # 設(shè)置日志文件中的輸出格式
        fileHandler.setFormatter(format_str)
        # 設(shè)置日志輸出文件
        self.logger = logging.getLogger(filename)
        # 設(shè)置日志級別
        self.logger.setLevel(self.level_relations.get(level))
        # 將輸出對象添加到logger中
        self.logger.addHandler(streamHandler)
        self.logger.addHandler(fileHandler)

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

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

可以在控制臺中看到如下打印信息:

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

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

打開test.log文件,可以看到里面的內(nè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é)

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

相關(guān)文章

最新評論