azure - 应用洞察记录——只记录我所说的,不记录其他
问题描述
我有一个 Azure Function V3(.net 核心)。我使用的 ILogger 来自 Microsoft.Extensions.Logging。我的问题是我做不到:
该函数仅用于记录我使用 ILogger 在 C# 代码中输入的内容。信息,异常,警告,...
例如:log.LogInformation("我的日志");
内置日志记录功能中没有任何内容,包括错误、异常、依赖项,什么都没有
我想要执行此操作的确切host.json日志记录值。
只有我在 C# 代码中输入的内容,没有其他内容。
我的代码示例:
[FunctionName("GetNetworkHouseDetail")]
public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = "network/houseMonitoringDevices")] HttpRequest req, ILogger log, ClaimsPrincipal claims)
{
try
{
var start = DateTime.UtcNow;
// some actions
var end = DateTime.UtcNow;
var duration = (end - start).TotalSeconds;
log.LogInformation($"API - GetNetworkHouseDetail: took {duration} second to finish");
return new OkObjectResult(JsonConvert.SerializeObject(result));
}
catch (Exception ex)
{
log.LogError($"{ex.GetExceptionMessages()}", ex);
}
}
解决方案
好吧,您可以为此使用日志级别。从文档:
无需任何自定义配置即可使用 Application Insights。默认配置可能会导致大量数据。如果您使用的是 Visual Studio Azure 订阅,您可能会达到 Application Insights 的数据上限。在本文后面,您将了解如何配置和自定义函数发送到 Application Insights 的数据。对于函数应用,日志记录在 host.json 文件中配置。
通过使用 LogLevel None,您可以禁用给定类别和提供程序的所有日志记录。
例如,你可以做
{
"version": "2.0",
"logging": {
"LogLevel": {
"Default": "None",
"Host.Results": "Information",
"Host.Aggregator": "Information",
"Function.MyFunction.User": "Information"
},
}
}
它将禁用除您的功能之外的所有日志记录。您编写的函数的日志类别是“Function.<YOUR_FUNCTION_NAME>.User.”。(将 <YOUR_FUNCTION_NAME> 替换为函数的实际名称,来自代码中的 FunctionName 属性)
不幸的是,您必须指定所有功能,不能包含诸如指定之类的通配符"Function.*.User": "Information"
。您可以将"Function": "Information"
所有功能的日志级别设置为信息,但随后也会出现一些额外的日志记录。
这也将从日志记录中排除依赖性和请求跟踪。看到这个。
如果您在任何时候想要包含请求和依赖项,您需要将所有以“功能”开头的类别的日志级别设置为Information
.
您可能会禁用主机类别的日志记录,但它们是特殊类别,您现在可能想要这样做。
推荐阅读
- vue.js - 在 vue js 中将类作为道具传递?
- android-layout - SwitchCompat 文本未显示在操作栏上
- schedule - 在套件脚本 2.0 中找不到函数 setValue?
- javascript - Sapper 不导出 *.json.js 文件
- android - 添加firebase性能依赖后Gradle依赖冲突
- java - 在不使用 apache CompareToBuilder 的情况下实现我自己的 compareTo()
- jenkins - 如何在 Jenkins 的控制台输出中提取错误?
- javascript - 将组件传递给 useState() 钩子
- python - 函数调用子函数满足条件
- python - Python 函数调用 vs 数据库查询(django ORM)开销