第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Python 日志記錄 - 在“記錄”中覆蓋 args/msg,以避免更改為可變對象數(shù)據(jù)

Python 日志記錄 - 在“記錄”中覆蓋 args/msg,以避免更改為可變對象數(shù)據(jù)

有沒有辦法用密文類實(shí)現(xiàn)Python日志記錄過濾器,這樣任何用參數(shù)記錄消息的調(diào)用(例如,LOGGER.debug('my message, %s, %s', data1, data2)都使用msg和args的副本而不是傳遞的可變對象?我們的實(shí)現(xiàn)意味著日志記錄編校類最終會更改可變數(shù)據(jù),然后與編校字符串一起存儲/發(fā)送可變數(shù)據(jù)。我知道我們可以在對記錄器的調(diào)用上執(zhí)行此操作,例如 LOGGER.debug('my message, %s, %s', copy.deepcopy(data1), copy.deepcopy(data2)),但希望有一種方法可以覆蓋日志記錄設(shè)置定義中“記錄”的篩選器函數(shù) resposnbile?
查看完整描述

1 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

您必須覆蓋該函數(shù)。應(yīng)用篩選器時(shí),記錄已創(chuàng)建。makeRecord


import logging

import copy


class CopyLogger(logging.Logger):

    def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None, sinfo=None):

        args = copy.deepcopy(args) # <- this is the line you care about

        return super().makeRecord(name, level, fn, lno, msg, args, exc_info, func, extra, sinfo)


logging.setLoggerClass(CopyLogger)

log = logging.getLogger('mylogger')


data1 = 'hello'

data2 = 'world'

log.warning('my message, %s, %s', data1, data2)


查看完整回答
反對 回復(fù) 2022-08-25
  • 1 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號