Serilog为文件,控制台等提供诊断日志记录。它易于设置,具有干净的API,并且可以在最近的.NET平台之间移植。
将 Serilog LogContext 添加到每个日志调用
有没有一种方法可以将 LogContext 调用“注入”到项目中的所有 Serilog 日志调用中? 我想添加一个 ExecutionContext 属性,它只是一个在共享类中生成的十六进制字符串
我听说 Serilog 很棒,我想在我的 .NET Core API 中使用它。 由于 Azure Table Storage 的成本低,它是我首选的“数据库”。我看到 Serilog 有一个水槽
如何使用 Azure Functions v4 正确设置 Serilog?
我想在 Azure Function v4 (.net 6) 中使用 Serilog(日志应该发送到 Datadog)。为此,我安装了以下 nuget 包: 我想在 Azure Function v4 (.net 6) 中使用 Serilog(日志应该发送到 Datadog)。为此,我安装了以下 nuget 包: <PackageReference Include="Serilog" Version="2.10.0" /> <PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" /> <PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" /> <PackageReference Include="Serilog.Sinks.Console" Version="4.0.1" /> <PackageReference Include="Serilog.Sinks.Datadog.Logs" Version="0.3.5" /> 下面是Startup.cs类中的配置: public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddHttpClient(); //... adding services etc. Log.Logger = new LoggerConfiguration() .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) .MinimumLevel.Override("Worker", LogEventLevel.Warning) .MinimumLevel.Override("Host", LogEventLevel.Warning) .MinimumLevel.Override("System", LogEventLevel.Error) .MinimumLevel.Override("Function", LogEventLevel.Error) .MinimumLevel.Override("Azure.Storage.Blobs", LogEventLevel.Error) .MinimumLevel.Override("Azure.Core", LogEventLevel.Error) .Enrich.WithProperty("Application", "Comatic.KrediScan.AzureFunctions") .Enrich.FromLogContext() .WriteTo.DatadogLogs("XXXXXXXXXXX", configuration: new DatadogConfiguration() { Url = "https://http-intake.logs.datadoghq.eu" }, logLevel: LogEventLevel.Debug) .WriteTo.Console() .CreateLogger(); builder.Services.AddSingleton<ILoggerProvider>(sp => new SerilogLoggerProvider(Log.Logger, true)); builder.Services.AddLogging(lb => { //lb.ClearProviders(); //--> if used nothing works... lb.AddSerilog(Log.Logger, true); }); 基本上日志记录工作,但所有日志语句都写了两次(有几毫秒的差异,Datadog 和控制台)。 很明显我在配置上做了一些根本性的错误。我不使用 appsettings.json,Serilog 的配置只在代码中进行。我搜索了整个互联网并阅读了几乎所有关于 Serilog 和 Azure Functions 的文章。在 Stackoverflow 上,我几乎还阅读了所有关于它的问题并尝试了所有答案。不幸的是,到目前为止没有成功。 SO-问题例如: 将 Serilog 与 Azure 日志流结合使用 如何将 Serilog 与 Azure WebJobs 一起使用? Serilog enricher Dependency Injection with Azure Functions https://github.com/hgmauri/sample-azure-functions/blob/main/src/Sample.AzureFunctions.DotNet31/Startup.cs 是否有使用 Azure Functions v4 / .net 6 设置 Serilog 的示例? 非常感谢您的帮助! 迈克尔哈臣 知道了!在用 ILogger 替换所有 ILogger<T> 并删除线 builder.Services.AddSingleton<ILoggerProvider>(sp => new SerilogLoggerProvider(Log.Logger, true)); 后,一切都按预期工作。 对于那些因为无法使用 app insights sink 正确配置登录 azure 功能而来到这里的人,这对我有用: private static void ConfigureLogging(IServiceCollection services) { Log.Logger = new LoggerConfiguration() .MinimumLevel.Information() .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) .MinimumLevel.Override("System", LogEventLevel.Warning) .MinimumLevel.Override("Worker", LogEventLevel.Warning) .MinimumLevel.Override("Host", LogEventLevel.Warning) .MinimumLevel.Override("Function", LogEventLevel.Warning) .MinimumLevel.Override("Azure", LogEventLevel.Warning) .MinimumLevel.Override("DurableTask", LogEventLevel.Warning) .Enrich.FromLogContext() .Enrich.WithExceptionDetails() .WriteTo.ApplicationInsights( TelemetryConfiguration.CreateDefault(), TelemetryConverter.Events, LogEventLevel.Information) .CreateLogger(); services.AddLogging(configure => configure.AddSerilog(Log.Logger)); } 在撰写本文时此处的示例似乎不起作用。 日志记录范围不会在输出中捕获。 Serilog 版本:2.11.0 Serilog.Sinks.ApplicationInsights 版本:4.0.0 未来的链接示例: [assembly: FunctionsStartup(typeof(MyFunctions.Startup))] namespace MyFunctions { public class Startup : FunctionsStartup { public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddSingleton<ILoggerProvider>((sp) => { Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .WriteTo.ApplicationInsights(sp.GetRequiredService<TelemetryClient>(), TelemetryConverter.Traces) .CreateLogger(); return new SerilogLoggerProvider(Log.Logger, true); }); } } } 要设置Serilog.ILogger而不是ILogger<T>,您可以将Serilog添加为Singletonbuilder.AddSingleton<ILogger>(Log.Logger);而不是services.AddLogging(configure => configure.AddSerilog(Log.Logger));,然后在函数中从Serilog注入ILogger而不是ILoggerFactory并记录为_logger.Information("awesome log"); 我在 .net7 中运行隔离函数
我已经开始在各种项目中使用 Serilog,并且几乎总是存在一些日志数据未通过的问题。 例如,现在我有一个简单的 C# .NET core 6 项目...
我在 .NET Core 中创建了一个类库项目,并将其打包以用于其他应用程序。 这个类库的一部分关于记录未处理的异常。我想用 Serilog 记录异常。 这
如何使用 Serilog Sink Http Authentication Bearer 登录
我有一个控制台应用程序,我想使用 Serilog (v2.12.0) http 接收器 (v8.0.0) 登录到 Logtail,并为身份验证承载配置自定义 httpclient,如下所示: 使用 Microsoft.Extensions.
为什么我通过 ILogger 登录时,无论是否使用 Serilog,我的日志消息都是胡说八道?
我正在编写一个.NET 7 应用程序,我的最终目标是将JSON 日志输出到控制台。我可以使用 Microsoft 的 ILogger 组件来做到这一点,这似乎是非常惯用的,至少......
我有一个 .NET 6 ASP.NET Core 应用程序。有一个带有 Serilog 配置的 serilog.json 文件。在运行时,如果你改变这个文件,Serilog 看不到变化,但是 reloadOnChange
我在 10 个 Web 服务器上部署了一个 Web 应用程序。它们都是这样配置的(注意,下面的路径是共享网络路径。所以它们都指向同一个日志文件): “Serilog”...
不能使用 ElasticSearch IP 地址作为节点 URI(不信任服务器证书)
这是我在这里的第一篇文章,所以请多多包涵! 当前设置: -Elasticsearch 和 Kibana 托管在带有 docker 的 ubuntu 服务器上(因此 Elastic API URI 类似于 xxx.xxx.xxx.xxx:
为什么 Serilog 在我的应用程序启动崩溃时没有将日志发送到 Seq sink
我有一个 .NET 6 BackgroundService,我正试图将其部署在 Azure 容器实例上。实例一启动就崩溃,但没有日志转储到我的 Serilog 的 Seq 接收器中。我知道...
使用 Serilog 将 JSON 格式的数据写入 AWS Cloudwatch
我想将 API 请求数据记录到 serilog 以进行某些分析,但我无法正确设置格式。我在 Dot net Core 5 中使用 Serilog,我的记录器配置如下 记录器配置
我想为我的 .Net 5 Web Api 项目使用 Serilog。我安装了软件包 Serilog.AspNetCore v4.1.0 Serilog.Sinks.Console v4.0.0 并将 Program.cs 文件更改为 公开密封类程序...
命名占位符不应该是 Serilog 中的数值以及在 Serilog 中使用结构化日志记录 VS 字符串插值的优势?
为什么在Serilog中,命名占位符不应该是数值,但是数字占位符不会用Console.WriteLine产生警告。 例如: _log.LogInformation("一些数据 - {0} 和 data2:...
使用Serilog将程序结束时创建的日志文件通过电子邮件发送出去
我在C# Console应用程序中使用Serilog库来建立一个Scheduler,这个Scheduler会把每天的消息记录在一个日志文件中。文件名是用下面的代码动态创建的。Log.Logger = new ...
我正在使用下面的代码,每次运行代码时,我都能看到LogErrorToDatabase方法中的断点。然而有时我在数据库中看到ErrorGuid的日志条目,并 ...
ASP.NET Core中的Serilog DI,要注入哪个ILogger接口?
语境 我已经在我的ASP.NET Core应用程序中成功配置了Serilog,只剩下DI部分。问题 现在我有两个ILogger接口,一个是Serilog.ILogger,另一个是Microsoft...。
Serilog ILogger.ForContext在XUnit Mock中抛出NullReferenceException。
当我试图使用Mock对signalr组件进行单元测试时,遇到了一个问题。这里是问题发生的地方 _logger.LogInformation($"Registering a Station with id: {Id}" + $"与...
将Serilog与Microsoft.Extensions.Logging.ILogger一起使用。
我已经创建了一个.NET Core 3.1项目,使用Host、IoC容器和IServiceCollection,并使用Microsoft.Extensions的ILogger<>接口实现了到处的日志记录......。
在ASP.NET Core 3.1中使用配置中的ConnectionString
我正在使用推荐的方法来配置Serilog与ASP.NET Core。如何在Main方法中从配置中获取ConnectionString来配置SQL Server sink? public class Program { ...