c# - 在 .NET Core MVC 中使用 Serilog 和 Azure 表存储进行日志记录
问题描述
尽管在谷歌上花了几个小时,我还是没有到达那里。我们有一个 Core 3.1 MVC Web App 项目,我被要求使用 SeriLog 将日志写入 Azure 表存储。对于我的生活,我在网上找不到工作示例或教程。这是我到目前为止所做的:
1) 添加了以下 NuGet:
- Serilog
- Serilog.Extensions.Logging
- Serilog.Sinks.AzureTaleStorage
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"
}
}
]
},
现在我被困住了。这目前Program.cs
在CreateHostBuilder
:
.ConfigureLogging(logging =>
{
logging.AddConsole();
})
我想我应该更换这个?但是,用什么?我不知道从这里去哪里。GutHub 上的serilog-sinks-azuretablestorage页面没有多大帮助。而且我无法通过谷歌找到任何解释如何完成实施的东西。
解决方案
好吧,我对此没有任何意见。但是在阅读了大约 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
是 的一个实例,HostBuilderContext
它包含 '.Configuration' 的一个实例IConfiguration
。所以hostingContext.Configuration
包含你所有的设置appsetting.json
。
除了我在 OP 中提到的 NuGet 包之外,我还必须添加这个:
Serilog.设置.配置
(令人惊讶的是,有时编写 4 行代码可能需要 7 或 8 个小时。)
推荐阅读
- math - 如何在参数均衡器中绘制频率分离
- html - 使用 css 将悬停应用于具有相同类名的所有元素
- actions-on-google - 您在哪里可以在未部署但仍处于开发阶段的 google-home 应用程序中找到您的操作
- android - Google Admob 广告最近停止展示
- android - 通过 Tensorflow 进行的图像分类给出了完全相同的预测
- python - 熊猫数据框-> Float64 或 npy?
- java - 无法在 Junit 中设置正确的期望值。面对 mockit.internal.UnexpectedInvocation
- sql-server - SQL Server Linux - 使用 OPENROWSETsql 时未注册 OLE DB
- java - 使用 moka7 从 plc 读取字符串
- android - 片段中的 onBackPressed()