Python OpenFlask将requestid头设置为FlaskMiddleware/AzureLogHandler中的设置

2024-05-29 11:57:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Azure Application Insights进行日志记录。我正在尝试设置一个环境,使我的所有日志都具有相同的跟踪id/请求id以实现可见性

documentation for logging requests中,使用以下代码:

from flask import Flask
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.ext.flask.flask_middleware import FlaskMiddleware
from opencensus.trace.samplers import ProbabilitySampler

app = Flask(__name__)
middleware = FlaskMiddleware(
    app,
    exporter=AzureExporter(connection_string="InstrumentationKey=<your-ikey-here>"),
    sampler=ProbabilitySampler(rate=1.0),
)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host='localhost', port=8080, threaded=True)

请求已成功登录Azure Monitor,其请求ID为操作ID

我可以添加与traces具有相同操作Id的日志,并且我将能够看到某些请求中有哪些跟踪:

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.ext.azure.log_exporter import AzureLogHandler
from opencensus.ext.flask.flask_middleware import FlaskMiddleware
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace import config_integration
from opencensus.trace.samplers import AlwaysOnSampler
from opencensus.trace.tracer import Tracer

config_integration.trace_integrations(['logging'])
logging.basicConfig(format='%(asctime)s traceId=%(traceId)s spanId=%(spanId)s %(message)s')
tracer = Tracer(sampler=AlwaysOnSampler())

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(AzureLogHandler(
    connection_string='InstrumentationKey=...')
)

app = Flask(__name__)
middleware = FlaskMiddleware(
    app,
    exporter=AzureExporter(connection_string="InstrumentationKey=..."),
    sampler=ProbabilitySampler(rate=1.0),
)

但是,如何将记录在请求和跟踪中的跟踪id作为头写入响应中的用户


Tags: namefromimportidappflaskloggingtrace

热门问题