gpt4 book ai didi

c# - 为 Azure Functions 设置 Serilog

转载 作者:行者123 更新时间:2023-12-05 05:53:09 25 4
gpt4 key购买 nike

我对 C# 和 Azure 比较陌生,这件事让我很困惑。我想要的是将所有 Information+ 记录到 Seq,并将 MS/System 覆盖到 Warning+。

启动.cs

using System;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Serilog;
using Serilog.Events;

[assembly: FunctionsStartup(typeof(SillyApp.Startup))]

namespace SillyApp
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var logger = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("System", LogEventLevel.Warning)
.WriteTo.Seq("https://blahblah.bla")
.CreateLogger();

builder.Services.AddLogging(b => { b.AddSerilog(logger); });
}
}
}

我的理解是,我现在已将 Serilog 提供程序添加到日志记录提供程序。这在 Seq 接收时有效,但覆盖不执行任何操作。然而,Minimumlevel.Information 确实有效。

SillyApp.cs

using System;
using System.Text;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace SillyApp
{
public class MyClass
{
private ILogger<MyClass> _logger;

public MyClass(ILogger<MyClass> log)
{
_logger = log;
}

[FunctionName("TimedThing")]
public async Task RunAsync([TimerTrigger("*/10 * * * * *")] TimerInfo timer)
{
_logger.LogInformation("Helloes");
}
}
}

我的理论 是日志记录提供程序现在包括默认的和 Serilog 的。不知何故,它们结合在一起,让我的生活变得痛苦。 Seq 中出现的是一大堆东西。已执行的消息,“1 个功能已加载”,“主机已初始化/已启动”。标记为信息,但甚至没有显示在我的运行窗口中。

因此,如果我的理论是正确的,我该如何覆盖默认日志记录提供程序?如果我弄错了,有人可以告诉我发生了什么事吗?

最佳答案

并非所有 Serilog 功能都适用于 AddSerilog(),最低级别覆盖是其中之一。

在常规应用中,IHostBuilder 上的UseSerilog()(较新的 API)将与所有 Serilog 功能一起正常工作。

不幸的是,我认为 Azure Function 应用程序不会为您提供可使用的 IHostBuilder

更好的选择是使用 Seq.Extensions.Logging(dotnet add package Seq.Extensions.Logging)而不是 Serilog,并使用以下方式写入 Seq:

        services.AddLogging(b => b.AddSeq("https://blahblah.bla"));

然后您将能够在 appsettings.json 配置文件中使用 Microsoft.Extensions.Logging 级别覆盖:

{
"Logging": {
"LogLevel": {
"Default": "Information"
},
"Seq": {
"ServerUrl": "https://blahblah.bla",
"ApiKey": "1234567890",
"LogLevel": {
"System": "Information",
"Microsoft": "Warning"
}
}
}
}

关于c# - 为 Azure Functions 设置 Serilog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69965890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com