Python3 日志同时输出到控制台和文件
生活随笔
收集整理的這篇文章主要介紹了
Python3 日志同时输出到控制台和文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python3中想要將程序的日志打印到文件中,便于后期查看原因。但是在開發階段又想讓日志打印到控制臺,這時候可以用一個類將其封裝起來,用法就跟java差不多,配置也很簡單。
需要用到python內置模塊 logging 和其中的函數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:備份文件個數,若超過這個數就會自動刪除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一樣,創建一個Logger對象,通過對象去操作。
log = Logger(level="debug").loggerlog.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: errorProcess finished with exit code 0同時,還可以看到在父級同級的目錄下的/log中創建了一個名叫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?
總結
以上是生活随笔為你收集整理的Python3 日志同时输出到控制台和文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: setTimeout面试笔试题及理解
- 下一篇: LVT | ViT轻量化的曙光,完美超越