簡體   English   中英

如何在 Azure Functions 中使用結構化日志記錄

[英]how to use structured logging in Azure Functions

我在 Azure 函數中使用了相對較新的 ILogger(與 TraceWriter)選項,並試圖了解如何捕獲日志。

這是我的功能:

    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, ILogger log)
    {
        log.LogTrace("Function 1 {level}", "trace");
        log.LogWarning("Function 1 {level}", "warning");
        log.LogError("Function 1 {level}", "error");

        return req.CreateResponse(HttpStatusCode.OK, "Success!!!!");
    }

當我查看服務器日志時,LogFiles 目錄具有層次結構。

在此處輸入圖片說明

黃色突出顯示的文件包括我的日志語句:

2017-08-19T13:58:31.814 Function started (Id=d40f2ca6-4cb6-4fbe-a05f-006ae3273562)
2017-08-19T13:58:33.045 Function 1 trace
2017-08-19T13:58:33.045 Function 1 warning
2017-08-19T13:58:33.045 Function 1 error
2017-08-19T13:58:33.075 Function completed (Success, Id=d40f2ca6-4cb6-4fbe-a05f-006ae3273562, Duration=1259ms)

結構化目錄在這里什么都不包含,但在我的實際功能應用程序目錄中似乎有各種“編碼診斷”日志語句。

我應該在這里期待什么? 最終,我希望有一個接收器來記錄我所有應用程序組件的日志,並全面利用結構化日志記錄。

從 Azure Functions 收集結構化日志記錄的最佳方法是使用 Application Insights。 如果您定義了您的 Logger 基於 ILogger,您可以定義一個模板來指定您要記錄的屬性。 然后在 Application Insights 跟蹤中,使用 Application Insights 查詢語言(又名 Kusto),您可以使用名稱 customDimensions.prop__{name} 訪問每個屬性的值。

您可以在這篇文章https://platform.deloitte.com.au/articles/correlated-structured-logging-on-azure-functions上找到有關如何使用 Azure Functions v2 執行此操作的示例

我有同樣的問題。 日志文件記錄器並不真正尊重結構化日志記錄,但如果您使用 AppInsights for Azure Functions,它實際上會為您的結構化日志記錄添加自定義屬性

我在這里進行了一次對話https://github.com/Azure/azure-webjobs-sdk-script/issues/1675

僅供參考:以隔離模式(.NET5 和 .NET6)運行的 Azure Functions 不支持使用來自 DI 的 ILogger 或在 FunctionContext 中提供的結構化日志記錄。 截至 2021 年 11 月,有一個關於它的公開錯誤: https : //github.com/Azure/azure-functions-dotnet-worker/issues/423

據我了解,發生錯誤是因為所有 ILogger 調用都通過主機和隔離函數之間的 GRPC 連接,並且在該過程中消息被格式化而不是發送原始格式和參數。 將記錄結構化日志的 Azure Insights 連接在主機上運行並且僅接收最終消息。

我計划研究一些解決方法之王,在隔離的過程中直接訪問 Azure Insights。 如果它有效,我將在上面鏈接的錯誤的評論中發布解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM