Вы должны переопределить функцию 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)