You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Isolated Azure Functions日志无法显示在Azure门户调用追踪

.NET 8 Isolated Azure Functions 自定义日志不显示的问题解决

日志机制关键变化

.NET 8 Isolated模式下,默认日志过滤规则比.NET 6 Isolated更严格:

  • 默认仅捕获Microsoft前缀分类的Information及以上级别日志,非Microsoft前缀的自定义日志,默认仅捕获Warning及以上级别。
  • 函数类的日志分类默认格式为Function.<你的函数类名>.User,该分类的日志默认级别未设置为可见。

具体解决步骤

1. 调整host.json的日志过滤配置

修改host.json,显式设置自定义日志分类的最低级别,确保Information及以上日志能被收集:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    },
    "logLevel": {
      "Function.MyFunction.User": "Information", // 替换成你的函数对应的分类名
      "Default": "Information" // 全局默认日志级别,可选
    }
  }
}

若不清楚日志分类名,可本地运行函数查看控制台输出,日志前缀会显示类似[Information] Function.MyFunction.User: 自定义日志内容的条目,其中Function.MyFunction.User即为分类名。

2. 正确使用日志注入

两种注入方式的正确写法:

构造函数注入ILogger(推荐)

public class MyFunction
{
    private readonly ILogger<MyFunction> _logger;

    public MyFunction(ILogger<MyFunction> logger)
    {
        _logger = logger;
    }

    [Function("MyFunction")]
    public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
    {
        _logger.LogInformation("自定义日志消息:函数开始执行");
        // 业务逻辑
        var response = req.CreateResponse(HttpStatusCode.OK);
        await response.WriteStringAsync("执行完成");
        return response;
    }
}

通过FunctionContext获取ILogger

[Function("MyFunction")]
public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req, FunctionContext context)
{
    var logger = context.GetLogger<MyFunction>();
    logger.LogInformation("通过FunctionContext获取的自定义日志");
    // 业务逻辑
    var response = req.CreateResponse(HttpStatusCode.OK);
    await response.WriteStringAsync("执行完成");
    return response;
}

3. 验证Application Insights配置

若依赖Application Insights展示日志:

  • 确保函数应用的APPLICATIONINSIGHTS_CONNECTION_STRING已在Azure门户的配置中正确设置。
  • 确认host.json中applicationInsights部分未禁用日志收集。

4. 本地调试排查

本地运行函数时查看控制台输出:

  • 若自定义日志能在控制台打印,说明代码无问题,问题出在Azure门户的日志过滤或Application Insights同步延迟。
  • 若本地也不显示,检查日志级别是否正确(比如不要用LogTrace,默认不会捕获该级别),以及host.json的配置是否生效。

内容的提问来源于stack exchange,提问作者marc_s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:22:53