【发布时间】:2021-06-19 00:27:14
【问题描述】:
我有连接多个 IoT 设备的 IoT Hub。我有 IoT Hub 触发 Azure 函数,它引用不同的类库进行数据处理和其他工作。
我正在尝试记录从设备接收数据时发生的情况以及处理过程中的任何错误等。因此存在不同的信息、警告和错误日志。 除此之外,我还有一些可以并行调用的持久函数。
当我编写日志语句时,我希望将 Deviceid 作为前缀附加到每个日志语句。这是为了跟踪我们收到错误、警告等的设备。
有什么办法,如果我创建客户记录器对象,在我们获取数据时设置设备 ID,然后将该对象作为 DI(构造函数不作为参数所有方法)注入,以便其他类可以使用相同的对象进行记录。
【问题讨论】:
-
对于日志记录,您可以使用 BeingScope。对于请求遥测,您可以查找 ITelemetryInitializer。对于对象 DI,您可以将其作为作用域生命周期注入,可以使用 HttpContext 解析。
-
这个 BeginScope 是否可以用于持久函数调用?范围是否结转到调用的持久函数?还是调用了任何类库函数?
-
Begin 范围将用于任何类库 Check this 的任何方法调用。但是,调用的 Orchestrator 函数和 from 到 Activity 函数的范围将不存在。您也可以在这些函数上添加 Begin Scope。
标签: azure logging .net-core dependency-injection azure-functions