【发布时间】:2019-03-06 13:05:36
【问题描述】:
我创建了一个简单的 Azure 函数,其意图是使用 Serililog 记录到 Azure Blob 存储。
当对 Serilog 接收器使用内联配置时,它工作得非常好,接收器被创建并且 Serilog 愉快地写入 Blob 存储。
这行得通:
Log.Logger = new LoggerConfiguration()
.WriteTo.AzureBlobStorage(
"STORAGEACCOUNT CONNECTION STRING", // <-- inline config
LogEventLevel.Information,
null,
"{yyyy}/{MM}/{dd}/MyLogFile.txt")
.CreateLogger();
问题是我想通过appsettings.json 配置这一切,但是当我尝试这个(在模拟器和云中本地运行)时,它无法绑定接收器设置,因此它的无法登录到博客存储。
如果我进行调试,我可以看到配置值正按预期加载到 configuration 对象中,但它们没有应用于日志配置.
这不起作用:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
appsettings.json 在这个 sn-p 中:
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Information"
}
},
"WriteTo": [{
"Name": "AzureBlobStorage",
"Args": {
"connectionString": " --- REPLACE WITH STORAGEACCOUNT BLOB CONNECTION STRING --- ",
"formatter": "Serilog.Formatting.Compact.RenderedCompactJsonFormatter, Serilog.Formatting.Compact",
"storageFileName": "{yyyy}/{MM}/{dd}/MyLogFile.txt",
"retainedFileCountLimit": 31
}
}
],
"Properties": {
"Application": "int-test-logging",
"Environment": "int"
}
}
}
我不确定我做错了什么,但我们将不胜感激。以下 github 存储库包含实现上述(两种方法)的代码,并重现了此行为。 https://github.com/oneiltomlinson/AzureFunctionsLogging
【问题讨论】:
标签: azure azure-functions serilog