当前位置: 首页 > 知识库问答 >
问题:

如何在Azure函数中使用结构化日志记录

谭锐藻
2023-03-14

我正在使用Azure函数中相对较新的ILogger(vs.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)

结构化目录在这里什么也不包含,但在我的real function applications目录中似乎有各种“CodedDiagnostic”日志语句。

在这里我该期待什么?最终,我希望有一个单一的接收器,用于从我的所有应用程序组件进行日志记录,并全面利用结构化日志记录。

共有1个答案

高夜洛
2023-03-14

我也有同样的问题。日志文件记录器并不真正尊重结构化日志记录,但如果您使用Azure函数的应用程序,它实际上会为结构化日志记录添加自定义属性

我在这里进行了一次讨论https://github.com/azure/azure-webjobs-sdk-script/issues/1675

 类似资料:
  • 我试图通过在我的Azure函数中进行日志记录来使用结构化日志记录,如下所示: 我的Azure函数是通过诊断设置插入日志分析工作区的。

  • 我试图创建一个用BlobTrigger触发的Azure函数。当我向目标容器添加新文件时,我可以通过查看调用来看到函数的运行,在Azure portal上的Monitor中显示触发时间和状态“Success”。然而,除了“已连接!”之外,日志中没有出现任何内容欢迎文本。 这是样板运行。我尝试过的csx有点修改,也有点修改: 和 function.json(我已向其添加了具有相同路径的输入绑定): 我

  • 我想为API和azure函数创建日志记录。 作为思维来使用,“服务总线”来创建日志记录。 注意:关于应用程序的洞察,as发现它影响到性能,它更多的是用于性能监控,然后是日志记录。https://blogs.msdn.microsoft.com/apimanagement/2018/01/12/application-insights-integration/

  • 从docker容器中将结构化日志写入journald的最佳方式是什么? 例如,我有一个使用sd_journal_send而不是更改应用程序的应用程序,我尝试通过 -v/var/log/systemd/journal:/var/log/systemd/journal docker journald输出日志记录选项有哪些限制?它似乎不支持应用程序编写不仅仅是消息字段。 -- 所以我发现我需要 C程序可

  • 是否已经有开源软件可以处理这个问题?

  • 我可以创建一个命名的子记录器,以便该记录器输出的所有日志都用它的名称标记。我可以只在函数/类/任何东西中使用记录器。 但是,如果该代码调用了另一个模块中的函数,该模块仅使用日志模块函数(根记录器的代理)进行日志记录,我如何确保这些日志消息通过相同的记录器(或者至少以相同的方式记录)? 例如: main.py 其他.py 产出: 我希望能够使两个日志行都标记为名称'stuff',我希望能够做到这一点