gpt4 book ai didi

python - 在 flask 应用程序中将用户 ip 和用户 id 添加到日志文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:30 32 4
gpt4 key购买 nike

我正在使用标准的 Python 日志记录包在 Flask 应用程序中写入日志文件。我想添加用户 ip 地址,如果用户通过身份验证,我还想记录用户 ID。有人知道怎么做这个吗?现在我的格式化程序看起来像这样

fmt = ('%(asctime)s - %(name)s - %(levelname)s - '
'%(filename)s:%(lineno)s - %(funcName)20s() - %(message)s')
formatter = logging.Formatter(fmt)

最佳答案

好的,我经理通过添加一个 costum 过滤器来做到这一点

class ContextualFilter(logging.Filter):
def filter(self, log_record):
''' Provide some extra variables to give our logs some better info '''
log_record.utcnow = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S,%f %Z')
log_record.url = request.path
log_record.method = request.method
# Try to get the IP address of the user through reverse proxy
log_record.ip = request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
if current_user.is_anonymous():
log_record.user_id = 'guest'
else:
log_record.user_id = current_user.get_id()
return True

可以添加到记录器中作为

std_logger.addFilter(ContextualFilter())

格式化程序应该是这样的

    fmt = ('%(utcnow)s - %(levelname)s - '
'user_id:%(user_id)s - ip:%(ip)s - %(method)s - %(url)s - '
'%(filename)s:%(lineno)s - %(funcName)20s() - %(message)s')

关于python - 在 flask 应用程序中将用户 ip 和用户 id 添加到日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48717333/

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