我想存储" werkzeug"输出文件(或创建类似的日志文件)并向每行日志添加其他数据。 (例如,如果会话中已知值,则为用户名的值)
如何进行?我希望用户成为"未知"如果会话中未知用户名。
在执行app.run()之前是否可以定义所有内容? (因为我在app.run之前尝试使用会话对象时遇到了在请求上下文之外工作的错误)
class UserIDFilter(logging.Filter):
"""
This is a filter which injects contextual information into the log.
"""
from flask import session
def filter(self, record):
username = session.get('username','unknown')
record.user_id = username
return True
logFormatStr = '%(asctime)s - %(levelname)s - %(message)s'
logging.basicConfig(filename='output.log',format = logFormatStr, level=logging.DEBUG)
app.run(debug=True)
关于app.run的问题是了解程序如何能够访问存储在会话中的用户值。 (我想在定义日志记录之前,我可能需要启动" app.run")
对我来说,最好的答案是Hello World示例,其中存储在会话中的用户名和添加了该信息的日志文件(类似于werkzeug)。
答案 0 :(得分:1)
你的问题有几个问题。
对于第一个,您可以在此处查看文档:{{3}}和Logging。
对于第二个,您可以使用00007FF8CE9F2890 ?? ??
00007FF8CE9F2891 ?? ??
00007FF8CE9F2892 ?? ??
00007FF8CE9F2893 ?? ??
00007FF8CE9F2894 ?? ??
,返回'未知'如果有人'不在会话中,否则它只返回值。
表示最后一个。 session.get('someone', 'unknown')
用于启动开发服务器,app.run()
是什么意思。只有错误可能不是很有用,显示一些代码并粘贴完整的错误日志。
如何登录烧瓶的基本示例:
define everything before doing app.run()
当您运行应用程序时,您将在同一目录中找到from flask import Flask, session
import logging
from logging import Formatter, FileHandler
app = Flask(__name__)
@app.route('/')
def index():
user_name = session.get('Hello, world', 'unknown')
app.logger.debug('Say somethind here'.format(
user_name, extra={'username': user_name}))
return 'Hello, {0}.'.format(user_name)
if __name__ == '__main__':
file_handler = FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(
Formatter('%(asctime)s %(levelname)s %(username)s: %(message)s'))
app.logger.addHandler(file_handler)
app.run(debug=True)
文件,内容为:
app.log