我有以下格式的日志行,并想要提取字段:
[field1: content1] [field2: content2] [field3: content3] ...
Run Code Online (Sandbox Code Playgroud)
我既不知道字段名称,也不知道字段数量.
我用反向引用和sprintf格式尝试了它,但没有得到任何结果:
match => [ "message", "(?:\[(\w+): %{DATA:\k<-1>}\])+" ] # not working
match => [ "message", "(?:\[%{WORD:fieldname}: %{DATA:%{fieldname}}\])+" ] # not working
Run Code Online (Sandbox Code Playgroud)
这似乎只适用于一个领域,但不是更多:
match => [ "message", "(?:\[%{WORD:field}: %{DATA:content}\] ?)+" ]
add_field => { "%{field}" => "%{content}" }
Run Code Online (Sandbox Code Playgroud)
kv过滤器也不合适,因为字段的内容可能包含空格.
是否有任何插件/策略来解决这个问题?
我正在使用Gunicorn作为Web服务器运行Flask应用程序.整个项目部署到Heroku.
Procfile
web: gunicorn app:app --log-file=-
Run Code Online (Sandbox Code Playgroud)
Flask会话在服务器端实现,只有会话ID存储在flask.session对象中.每当我尝试登录时,我都会首先正确登录,然后重定向到起始站点(应该是用户站点).
LoginController.py
def login(form) :
User.session.set(User.getByLogin(form))
if User.session.exists() :
return redirect(Urls.home)
return redirect(Urls.login)
Run Code Online (Sandbox Code Playgroud)
日志显示User.session.exists()返回True但在下一个方法中(在重定向期间)...
HomeController.py
def view() :
if User.session.exists() :
return CourseController.view()
return render_template("home.html")
Run Code Online (Sandbox Code Playgroud)
...同样的方法返回False.
User.session对象
def exists(self) :
key = session.get("user_key")
user = self.users.get(key)
Log.debug("session::exists", user = user)
return user is not None
Run Code Online (Sandbox Code Playgroud)
在以下所有请求中,用户是否随机登录.
这可能是什么原因?我听说过大的session对象会导致数据丢失,但我只会在其中存储整数.