在格式化程序下的Django日志记录设置中-我有一个var:
%(new_line_number)s
我的视图中有一个日志记录功能,该函数最后调用logger.debug,因此在这种情况下,我想传递换行号。
logger.debug('context for %s: %s', product, tool, extra={'newlinenumber':newlinenumber} )
我不想每次致电记录器时都传递extra = {'newlinenumber':None}。因为这看起来很乱而且很多余。我该怎么做?目前,如果我不包括在内
extra={'newlinenumber':None}
在没有换行号的情况下,记录器会在任何时候出错。 我唯一尝试传递换行号的时间是当我从日志记录函数调用它时。
答案 0 :(得分:0)
也许是这样吗?
def my_debug_function(my_str, product, tool, ext={'newlinenumber':None}):
logger.debug(my_str, product, tool, extra=ext)
然后您的用法将为my_debug_function('content for %s, %s', product, tool)
在这里,我认为我发现了更好的东西...
def test_log(self, *args, **kwargs):
kwarg_defaults = {"extra": {"newlinenumber":None}}
kwarg_defaults.update(kwargs)
self.debug(*args, **kwarg_defaults)
此用法与您的调试相同,但不限于另一个参数是3个参数:test_log('content for %s, %s', product, tool)
修改原始logger.debug是有风险的,但是无论如何,如果您只是指向它,就不会有太大的问题...
您可能会在以下内容中说些什么...
logger.old_debug = logger.debug
def test_log(*args, **kwargs):
kwarg_defaults = {"extra": {"newlinenumber":None}}
kwarg_defaults.update(kwargs)
self.old_debug(*args, **kwarg_defaults)
logger.debug = test_log