繁体   English   中英

在 blazor webassembly 客户端应用程序中使用 serilog 作为日志记录提供程序

[英]Use serilog as logging provider in blazor webassembly client app

我想在客户端和服务器端的 blazor webassembly net 6 应用程序中使用 serilog。 这篇文章中,我发现了如何将日志条目中继到服务器,以便将它们写入日志文件。

然而,在这种方法中, Log静态类用于显式添加日志条目。

我想添加 serilog 作为日志记录提供程序,以便记录异常和自动生成的信息。

在服务器端我使用

var builder = WebApplication.CreateBuilder(args);
builder.Host
    .UseSerilog((ctx, lc) =>
    {
        lc.ReadFrom.Configuration(ctx.Configuration);
    });

这样一切都传递给 serilog。

UseSerilog在 Serilog.AspNetCore 中定义。 不幸的是,如果我将 Serilog.AspNetCore 添加到我的客户端项目中,则会出现以下错误:

NETSDK1082 没有适用于指定 RuntimeIdentifier 'browser-wasm' 的 Microsoft.AspNetCore.App 运行时包

有没有办法手动将 serilog 添加到日志记录提供程序,或者有没有办法将 Serilog.AspNetCore 包添加到客户端项目?

通过添加Serilog.Extensions.Logging NuGet 包,我已经能够将 Serilog 添加到我的客户端应用程序日志记录提供程序。

然后我使用了以下代码:

using Serilog;
using Serilog.Core;
using Serilog.Extensions.Logging;

var builder = WebAssemblyHostBuilder.CreateDefault(args);

/* ... */

/* Serilog configuration
 * here I use BrowserHttp sink to send log entries to my Server app
 */
var levelSwitch = new LoggingLevelSwitch();
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.ControlledBy(levelSwitch)
    .Enrich.WithProperty("InstanceId", Guid.NewGuid().ToString("n"))
    .WriteTo.BrowserHttp(endpointUrl: $"{builder.HostEnvironment.BaseAddress}ingest", controlLevelSwitch: levelSwitch)
    .CreateLogger();

/* this is used instead of .UseSerilog to add Serilog to providers */
builder.services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(dispose: true));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM