Вход в файл в Blazor WASM
Я новичок в 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");
3 ответа
Невозможно напрямую записать Blazor WASM в файл. Потому что коды полностью запускаются в браузере. Вы также можете использовать другие приемники serilog, такие как консоль браузера или реле Blazor, которые предоставляют специальные возможности для Blazor.
Это все теоретически, но я не вижу причин, почему бы это не сработало...
Если вы хотите войти в файл, чтобы обеспечить постоянство сообщений журнала (возможно, вы выполняете какие-то действия по устранению неполадок?), тогда вы можете войти в файл . я использую
Обратите внимание, что каждая запись в localStorage имеет ограничение на длину, но похоже, что во многих современных браузерах это ограничение составляет не менее 5 МБ. Каков максимальный размер значений localStorage?
Итак, сначала вы должны создать своего собственного поставщика журналов, который записывает сообщения в запись. Я бы, вероятно, продолжил объединять сообщения журнала в одно и то же
Затем добавьте свой регистратор (в Program.cs для клиентского Blazor), примерно так:
builder.Services.AddSingleton<ILoggerProvider, CustomLoggerProvider>(services =>
{ return new CustomLoggerProvider(); });
Затем введите и используйте, как обычно:
[Inject] ILoggerProvider loggerProvider { get; set; }
. . .
ILogger logger = loggerProvider.CreateLogger( GetType().FullName );
. . .
logger.LogInformation("Your message here");
Если вы хотите записать свой журнал в файл на клиенте, вы можете войти в консоль, а затем запустить 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");