Dav*_*len 5 serilog blazor blazor-server-side serilog-aspnetcore serilog-sinks-azureblobstorage
更新: 我这里有一个非常简单的例子。既不工作File也不AzureBlobStorage工作。此外,如果AzureBlobStorage设置了,它会在尝试加载时遇到异常Blazor_Logger_bug.styles.css- 这解释了为什么启用此功能时页面无法呈现。
我已经转而编写自己的记录器(比我尝试使用 Serilog 花费的时间更少)。但想警告其他人,它似乎不起作用,并会在您的应用程序中导致不相关的问题。
我在 Blazor 服务器应用程序中使用此功能(Serilog 到文件接收器工作正常)时遇到各种问题。
如果我设置如下:
var _logger = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.CreateLogger();
Log.Logger = _logger;
builder.Logging.AddSerilog(Log.Logger);
Run Code Online (Sandbox Code Playgroud)
然后它会成功记录到 Azure BLOB。但我有以下问题:
如果我设置如下:
builder.Logging.AddSerilog();
Run Code Online (Sandbox Code Playgroud)
然后网页就可以正常显示了。但我有以下问题:
如果我将其设置如下:
builder.Host.UseSerilog((hostingContext, loggerConfiguration) =>
{
loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration);
});
Run Code Online (Sandbox Code Playgroud)
然后网页就可以正常显示了。
但我有以下两个问题:
完整的相关代码是:
if (builder.Environment.IsDevelopment())
{
builder.Logging.ClearProviders();
builder.Logging.AddJsonConsole();
builder.Logging.AddDebug();
}
builder.Logging.AddSerilog();
Run Code Online (Sandbox Code Playgroud)
相关配置是:
"Serilog": {
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.AzureBlobStorage" ],
"MinimumLevel": {
"Default": "Warning",
"Override": {
"LouisHowe": "Information",
"ThirdPartyServices": "Information",
"CommonUtilities": "Information",
"Microsoft": "Warning"
}
},
"WriteTo": [
{
"Name": "AzureBlobStorage",
"Args": {
"connectionString": "*****secret*****",
"storageContainerName": "logs",
"storageFileName": "{yyyy}-{MM}-{dd}.txt"
}
},
{
"Name": "File",
"Args": {
"path": "C:/temp/log-.txt",
"rollOnFileSizeLimit": true,
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter,Serilog.Formatting.Compact",
"rollingInterval": "Day"
}
}
],
"Enrich": [ "FromLogContext", "WithThreadId", "WithMachineName" ]
},
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它发挥作用?
更新:重复一遍,我还配置了 Serilog 文件接收器并且工作正常。
我添加了Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));代码:
builder.Host.UseSerilog((hostingContext, loggerConfiguration) =>
{
loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration);
});
Run Code Online (Sandbox Code Playgroud)
或者
var _logger = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.CreateLogger();
Log.Logger = _logger;
builder.Logging.AddSerilog(Log.Logger);
Run Code Online (Sandbox Code Playgroud)
我在输出中得到了以下内容。未创建 BLOB。网页不显示。
2023-10-09T23:06:38.5791924Z Unable to find a method called WithThreadId. Candidate methods are:
Serilog.LoggerConfiguration With(Serilog.Configuration.LoggerEnrichmentConfiguration, Serilog.Core.ILogEventEnricher)
Serilog.LoggerConfiguration AtLevel(Serilog.Configuration.LoggerEnrichmentConfiguration, System.Action`1[Serilog.Configuration.LoggerEnrichmentConfiguration], Serilog.Events.LogEventLevel, Serilog.Core.LoggingLevelSwitch)
Serilog.LoggerConfiguration FromLogContext(Serilog.Configuration.LoggerEnrichmentConfiguration)
2023-10-09T23:06:38.5807420Z Unable to find a method called WithMachineName. Candidate methods are:
Serilog.LoggerConfiguration With(Serilog.Configuration.LoggerEnrichmentConfiguration, Serilog.Core.ILogEventEnricher)
Serilog.LoggerConfiguration AtLevel(Serilog.Configuration.LoggerEnrichmentConfiguration, System.Action`1[Serilog.Configuration.LoggerEnrichmentConfiguration], Serilog.Events.LogEventLevel, Serilog.Core.LoggingLevelSwitch)
Serilog.LoggerConfiguration FromLogContext(Serilog.Configuration.LoggerEnrichmentConfiguration)
Run Code Online (Sandbox Code Playgroud)
如果我使用builder.Logging.AddSerilog();,则不会有带有单词 的输出消息Serilog,不会创建 BLOB,并且网站会出现。
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |