gpt4 book ai didi

python 日志记录-额外​​参数的默认值

转载 作者:太空宇宙 更新时间:2023-11-03 12:47:29 30 4
gpt4 key购买 nike

我想将默认值设置为额外参数 user_id。我写了过滤器:

class SystemLogFilter(logging.Filter):
def filter(self, record):
if not record.user_id:
record.user_id = '--'

return True

但是我遇到了这个错误:AttributeError: 'LogRecord' object has no attribute 'user_id'

我怎样才能访问user_id参数?

这是我的日志配置:

LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'system_log': {
'format': '%(asctime)-15s - %(levelname)s - %(message)s - %(user_id)s'
},
},
'filters': {
'system2': {
'()': 'system.logging2.SystemLogFilter',
}
},
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.FileHandler',
'filename': (os.path.join(BASE_DIR, 'logs/system.log')),
'formatter': 'system_log',
'filters': ['system2'],
},
},
'loggers': {
'django': {
'handlers': ['file'],
'propagate': True,
'level': 'INFO',
},
}
}

最佳答案

您可以使用hasattr(内置函数)来检查日志记录是否具有所需的属性。如果没有,那么您可以设置一个默认值。

例如:

class SystemLogFilter(logging.Filter):
def filter(self, record):
if not hasattr(record, 'user_id'):
record.user_id = '--'
return True

然后您需要将这个新过滤器附加到应用程序某处的某些记录器(例如 root 记录器)(最好是开始):

root_logger = logging.getLogger()
root_logger.addFilter(SystemLogFilter())

关于python 日志记录-额外​​参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667139/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com