【问题标题】:How to implement logging in blazor (Server side - 3.1)如何在 blazor 中实现日志记录(服务器端 - 3.1)
【发布时间】:2021-02-07 19:20:23
【问题描述】:

如何在 blazor 中实现登录

我正在使用 Blazor (3.1) 服务器方法

我想记录(到文件)一些事件

我已经尝试过这个扩展:https://github.com/BlazorExtensions/Logging,但我不能让它像它说的那样工作。

有人可以指出一个工作示例吗?或者如果我做错了什么,请告诉我(我用这种方法遇到了这个错误:

检测到“Microsoft.JSInterop.IJSRuntime”类型的服务存在循环依赖项

【问题讨论】:

    标签: blazor-server-side


    【解决方案1】:

    要为 Blazor 服务器实现日志记录,您将采用与 .NET Core or ASP.NET Core 应用程序相同的方法。

    即在您的 Program.cs 文件中,您需要修改 CreateHostBuilder 方法以配置您的记录器,例如

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.AddConsole();
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
    

    然后,您可以使用依赖注入将 ILogger 注入到您的剃须刀组件或整个应用程序的其余部分。

    public class AboutModel : PageModel
    {
        private readonly ILogger _logger;
    
        public AboutModel(ILogger<AboutModel> logger)
        {
            _logger = logger;
        }
        public string Message { get; set; }
    
        public void OnGet()
        {
            Message = $"About page visited at {DateTime.UtcNow.ToLongTimeString()}";
            _logger.LogInformation(Message);
        }
    }
    

    请务必查看 Microsoft 文档以获取有关 built in loggersthird party loggerslogging in general 的信息。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      目前,由于与 IJSRuntime 的循环依赖关系,Blazor 服务器端应用程序似乎不支持使用 Blazor.Extensions.Logging 进行日志记录:

      https://github.com/BlazorExtensions/Logging/issues/44

      PHeuter:“IJSRuntime 可能需要记录,而记录器需要 IJSRuntime 来进行记录。”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 2013-10-21
        • 1970-01-01
        相关资源
        最近更新 更多