91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python?logging模塊怎么分文件存放

發布時間:2022-07-16 09:31:57 來源:億速云 閱讀:229 作者:iii 欄目:開發技術

這篇文章主要介紹“python logging模塊怎么分文件存放”,在日常操作中,相信很多人在python logging模塊怎么分文件存放問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python logging模塊怎么分文件存放”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

前言:

如果使用進到的日志文件方法:logging.FileHandler,會導致日志信息全部存放在一個日志文件中,不利于后面對日志文件的使用。
下面分享常見的兩種分文件存儲日志的方法。
delay = True 參數避免了出現多進程中讀取日志權限的問題

TimedRotatingFileHandler 根據時間創建日志文件

TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None)

python?logging模塊怎么分文件存放

atTime 與 when參數之間的關系

python?logging模塊怎么分文件存放

RotatingFileHander 根據日志文件大小創建日志文件

RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False)

python?logging模塊怎么分文件存放

分文件時,PermissionError異常處理

異常信息:

--- Logging error ---
 Traceback (most recent call last):
 '省略部分信息'
 PermissionError: [WinError 32] 另一個程序正在使用此文件,進程無法訪問。

解決方法:

設置 delay=True使用第三方庫 concurrent_log_handler.ConcurrentRotatingFileHandler

代碼實現:customer_log.py

import logging
from logging import handlers
from concurrent_log_handler import ConcurrentRotatingFileHandler
def set_basic_logger():
    path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    log_path = path + '/Log/'
    log_file = log_path + 'mockSystem.log'
    err_file = log_path + 'mockSystemErr.log'
    
    # 定制輸出格式
    formatter = logging.Formatter(
        '[%(asctime)s] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s')

    # # 所有日志在一個文件中存儲
    # handler = logging.FileHandler(log_file, encoding='utf-8', mode='a+')
    # 按天分文件存儲,保存最近30天的日志
    handler = handlers.TimedRotatingFileHandler(log_file, when='d', interval=1, backupCount=30, encoding='utf-8', delay=True)
    # 按文件大小分文件存儲,每個文件10字節,保留10個文件
    # handler = handlers.RotatingFileHandler(log_file, maxBytes=10, backupCount=10,
    #                                        encoding='utf-8', delay=True)
    # 按文件大小分文件存儲,每個文件10字節,保留10個文件
    # handler = ConcurrentRotatingFileHandler(log_file, maxBytes=10, backupCount=10)
    handler.setLevel(logging.INFO)
    handler.setFormatter(formatter)
    # err_handler = ConcurrentRotatingFileHandler(err_file, encoding='utf-8', mode='a+')  # 輸出到err_log文件
    err_handler = handlers.TimedRotatingFileHandler(err_file, when='d', interval=1, backupCount=30,
                                                   encoding='utf-8', delay=True)
    # err_handler = handlers.RotatingFileHandler(err_file, maxBytes=10, backupCount=10,
    #                                            encoding='utf-8', delay=True)
    # err_handler = ConcurrentRotatingFileHandler(err_file, maxBytes=10, backupCount=10)
    err_handler.setLevel(logging.WARNING)
    err_handler.setFormatter(formatter)

    logging.basicConfig(
        level=logging.DEBUG,
        format='[%(asctime)s] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
        handlers=[handler, err_handler]
    )

在項目主程序中使用時:main.py

from customer_log imoprt set_basic_logger
import mu
set_basic_logger()
mu.show_cur_info()

在項目其他模塊使用時:mu.py

import logging
def show_cur_info():
	msg = 'dddddd'
	print(msg)
	logging.info(msg

到此,關于“python logging模塊怎么分文件存放”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祥云县| 呼伦贝尔市| 辽中县| 玉环县| 南充市| 彭州市| 合山市| 伊春市| 孟连| 铜川市| 阆中市| 漳浦县| 梧州市| 厦门市| 文成县| 南郑县| 松江区| 英德市| 渭源县| 霸州市| 甘南县| 罗甸县| 南郑县| 嘉义市| 平罗县| 定兴县| 洪洞县| 神池县| 馆陶县| 焉耆| 许昌市| 南召县| 扎赉特旗| 伊宁市| 万宁市| 娱乐| 咸丰县| 宝山区| 澄江县| 江都市| 宁远县|