【问题标题】:Logging to a file in Blazor WASM在 Blazor WASM 中记录到文件
【发布时间】:2021-04-23 14:59:40
【问题描述】:

我是 Blazor 的新手。我想登录到 Blazor WASM 客户端的文件。我尝试使用 serilog 和 serilog.sink.file。但我没有看到任何日志写入文件。我也没有看到任何错误。是不是因为 Blazor WASM 在无法访问本地文件系统的浏览器沙箱中运行。有没有办法从 Blazor WASM 登录到文件。

我尝试在 Main 中配置的代码:

Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Is(logLevel)
            .WriteTo.File(path: @"C:\Users\abc\logs.log",
                          rollingInterval: RollingInterval.Day,
                          rollOnFileSizeLimit: true,
                          fileSizeLimitBytes: 10 * 1024 * 1024)                
            .CreateLogger();
 Log.Information("testing");

【问题讨论】:

  • 我想你已经回答了你自己的问题 - 是否因为 Blazor WASM 在无法访问本地文件系统的浏览器沙箱中运行。您可以使用console.write 通过javascript 登录到浏览器控制台,否则它会重新登录到服务器上的服务。
  • Blazor WASM 在浏览器中运行。任何类型的浏览器。 Linux 上的C:\Users\abc 在哪里?在 iOS 上?

标签: logging blazor serilog blazor-webassembly serilog-sinks-file


【解决方案1】:

无法直接在文件中记录 blazor WASM。因为代码完全在浏览器中运行。您还可以使用其他为 blazor 提供特殊功能的 serilog 接收器,例如 browserconsole 或 blazor relay

【讨论】:

    【解决方案2】:

    如果您想将日志写入客户端上的文件,您可以登录到控制台,然后启动带有重定向日志选项的 chrome:

    --enable-logging=stderr --v=1 > log.txt 2>&1

    登录控制台并在浏览器中使用 F12 查看日志更容易。 我使用 Microsoft.Logging.Extensions:

    https://www.nuget.org/packages/Microsoft.Extensions.Logging

    然后我在 Program.cs 中配置:

                builder.Services.AddLogging(builder => builder
                    .SetMinimumLevel(LogLevel.Debug)
                    .AddFilter("Microsoft", LogLevel.Warning)
                    .AddFilter("System", LogLevel.Warning)
                );
    

    然后我注入并调用记录器:

            [Inject] protected ILogger<MyClassIamLoggingFrom> Logger { get; set; }
    
            Logger?.LogDebug("Fetching install data");
    

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2023-02-22
      相关资源
      最近更新 更多