use*_*704 0 c# serilog .net-core
尽管在谷歌上花了几个小时,但我还是没有到达那里。我们有一个 Core 3.1 MVC Web App 项目,我被要求使用 SeriLog 将日志写入 Azure 表存储。对于我的一生,我无法在网上找到有效的示例或教程。这是我到目前为止所做的:
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Information",
"Microsoft.Hosting.Lifetime": "Warning"
}
Run Code Online (Sandbox Code Playgroud)
有了这个:
"Serilog": {
"WriteTo": [
{
"Name": "AzureTableStorage",
"Args": {
"storageTableName": "Logs",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***;EndpointSuffix=core.windows.net"
}
}
]
},
Run Code Online (Sandbox Code Playgroud)
现在我被困住了。目前Program.cs位于CreateHostBuilder:
.ConfigureLogging(logging =>
{
logging.AddConsole();
})
Run Code Online (Sandbox Code Playgroud)
我想我应该更换这个?但是,用什么?我不知道从这里该去哪里。Github 上的serilog -sinks-azuretablestorage页面没有太大帮助。我无法通过谷歌找到任何解释如何完成实施的内容。
嗯,我对此没有任何兴趣。但在阅读了大约 5 篇不同的文章后,我终于弄清楚了。在 Program.cs 中,默认情况下存在:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.AddConsole();
})
Run Code Online (Sandbox Code Playgroud)
我用这个替换了它:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(hostingContext.Configuration)
.CreateLogger();
logging.AddSerilog(logger);
})
Run Code Online (Sandbox Code Playgroud)
hostingContext是 的一个实例HostBuilderContext,它包含“.Configuration”,它是 的一个实例IConfiguration。因此hostingContext.Configuration包含您在 中的所有设置appsetting.json。
除了我在OP中提到的NuGet包之外,我还必须添加这个:
Serilog.设置.配置
(令人惊讶的是,有时编写 4 行代码可能需要 7 或 8 个小时。)
| 归档时间: |
|
| 查看次数: |
3686 次 |
| 最近记录: |