如何让.NET 8.0独立模式Azure Function输出Trace级日志到控制台?
.NET 8独立模式Azure Functions Trace日志无法输出问题
我们正将Azure Function从.NET 6.0进程内模式迁移至.NET 8.0独立模式,遇到Trace日志无法输出的问题:
进程内模式正常表现
在.NET 6进程内模式下,本地运行时只需在host.json中配置日志级别,即可通过ILogger.LogTrace将日志输出到控制台:
"logLevel": { "Function": "Trace" }
使用Windows版Visual Studio,基于.NET 8.0进程内模式的Azure Function标准模板及HTTP触发器,添加日志代码后:
public static class Function1 { [FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogTrace("TRACE"); // 新增日志代码 log.LogInformation("C# HTTP trigger function processed a request."); // 其余业务代码 } }
运行后可正常看到Trace日志输出:
独立模式异常情况
切换到.NET 8独立模式模板后,即使在host.json中设置全局日志级别为Trace:
"logLevel": { "default": "Trace" }
并编写如下代码:
[Function("Function1")] public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req) { _logger.LogTrace("TRACE"); _logger.LogInformation("C# HTTP trigger function processed a request."); return new OkObjectResult("Welcome to Azure Functions!"); }
运行后能看到大量系统日志,但自定义的Trace日志始终未显示:
已尝试的无效操作
- 在macOS的Rider中通过
dotnet run运行程序,结果一致 - 在
local.settings.json中添加配置项"AzureFunctionsJobHost__logging__logLevel__Function": "Trace",问题仍未解决
内容的提问来源于stack exchange,提问作者Glorfindel
相关产品推荐
相关产品推荐

