Python3如何日志同時輸出到控制臺和文件
Python3日志同時輸出到控制臺和文件
python3中想要將程序的日志打印到文件中,便于后期查看原因。
但是在開發(fā)階段又想讓日志打印到控制臺,這時候可以用一個類將其封裝起來,用法就跟java差不多,配置也很簡單。
需要用到python內置模塊 logging 和其中的函數(shù)handlers。
直接上代碼
import logging
from logging import handlers
# 日志輸出
class Logger(object):
# 日志級別關系映射
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"):
# 設置日志輸出格式
format_str = logging.Formatter(fmt)
# 設置日志在控制臺輸出
streamHandler = logging.StreamHandler()
# 設置控制臺中輸出日志格式
streamHandler.setFormatter(format_str)
# 設置日志輸出到文件(指定間隔時間自動生成文件的處理器 --按日生成)
# filename:日志文件名,interval:時間間隔,when:間隔的時間單位, backupCount:備份文件個數(shù),若超過這個數(shù)就會自動刪除
fileHandler = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backupCount, encoding="utf-8")
# 設置日志文件中的輸出格式
fileHandler.setFormatter(format_str)
# 設置日志輸出文件
self.logger = logging.getLogger(filename)
# 設置日志級別
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文件,可以看到里面的內容跟控制臺上的輸出內容是一致的。
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
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
如何使用Selenium實現(xiàn)簡單的網(wǎng)絡自動化操作指南
Selenium是一個用于Web應用測試的工具,Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣,這篇文章主要給大家介紹了關于如何使用Selenium實現(xiàn)簡單的網(wǎng)絡自動化操作的相關資料,需要的朋友可以參考下2024-03-03
Python Serial串口基本操作(收發(fā)數(shù)據(jù))
這篇文章主要介紹了Python Serial串口基本操作(收發(fā)數(shù)據(jù)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
使用Python通過win32 COM打開Excel并添加Sheet的方法
今天小編就為大家分享一篇使用Python通過win32 COM打開Excel并添加Sheet的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05

