![](/img/trans.png)
[英]Azure log analytics with Serilog stopped logging (MVC Core)
[英]Using Serilog for Logging with Azure Table Storage in .NET Core MVC
尽管在谷歌上花费了数小时,但我没有到达那里。 我们有一个 Core 3.1 MVC Web App 项目,我被要求使用 SeriLog 将日志写入 Azure 表存储。 对于我的生活,我无法在网上找到工作示例或教程。 这是我到目前为止所做的:
1) 添加了以下 NuGet:
2) 在 AppSettings.json 中,替换为:
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Information",
"Microsoft.Hosting.Lifetime": "Warning"
}
有了这个:
"Serilog": {
"WriteTo": [
{
"Name": "AzureTableStorage",
"Args": {
"storageTableName": "Logs",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***;EndpointSuffix=core.windows.net"
}
}
]
},
现在我被困住了。 这是目前在CreateHostBuilder
Program.cs
中:
.ConfigureLogging(logging =>
{
logging.AddConsole();
})
我想我应该更换这个? 但是,用什么? 我不知道从这里去哪里。 GutHub 上的 serilog-sinks-azuretablestorage页面没有太大帮助。 而且我一直无法通过 Google 找到任何解释如何完成实施的内容。
好吧,我对此一无所知。 但是在阅读了大约 5 篇不同的文章后,我设法弄清楚了。 在 Program.cs 中,这是默认的:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.AddConsole();
})
我用这个替换了它:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(hostingContext.Configuration)
.CreateLogger();
logging.AddSerilog(logger);
})
hostingContext
是hostingContext
的一个实例,它包含 ' HostBuilderContext
' ,它是IConfiguration
一个实例。 所以hostingContext.Configuration
包含所有设置appsetting.json
。
除了我在 OP 中提到的 NuGet 包之外,我还必须添加这个:
串行日志.设置.配置
(令人惊讶的是,有时编写 4 行代码可能需要 7 或 8 个小时。)
将 Serilog.Settings.Configuration 和 Microsoft.Extensions.Logging nuget 包添加到您的项目中,它有助于从 appsettings.json 读取 serilog 配置设置,并确保您的 Sartup.cs 文件中具有以下 Serilog 配置。
public Startup(IConfiguration configuration)
{
Configuration = configuration;
//logger config
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
logger.Information("Logging configured");
Log.Logger = logger;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
loggingBuilder.AddConsole();
loggingBuilder.AddDebug();
//Add Serilog config to logbuilder
loggingBuilder.AddSerilog(Log.Logger);
});
}
//Add this config in appsettings.json
"Serilog": {
"Using": [ "Serilog.Sinks.AzureTableStorage" ],
"WriteTo": [
{
"Name": "AzureTableStorage",
"Args": {
"storageTableName": "MyAppLogs
"connectionString": ""
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Properties": {
"Application": MyApp
}
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.