我对 C# 和 Azure 还比较陌生,这件事让我很困惑。我想要的是将所有信息+记录到 Seq,并将 MS/系统覆盖到警告+。
启动.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 个函数加载”,“主机初始化/启动”。标记为信息,但甚至没有显示在我的运行窗口中。
因此,如果我的理论是正确的,我该如何覆盖默认的日志记录提供程序?如果我弄错了,那么有人可以告诉我发生了什么吗?