【问题标题】:.Net AzureBlobLoggerOptions - properties - documentation?.Net AzureBlobLoggerOptions - 属性 - 文档?
【发布时间】:2022-11-04 06:34:36
【问题描述】:
环境:
Windows 10
Microsoft Visual Studio Community 2019
Version 16.11.9
VisualStudio.16.Release/16.11.9+32106.194
Target framework is .NET 5.0
尝试使用 Microsoft.Extensions.Logging.AzureAppServices 提供程序包为 Azure Web 应用程序设置各种日志记录属性。
在 Visual Studio 中,Intellisense 显示属性“文件名格式” - 并表示默认格式为“AppName/Year/Month/Day/Hour/Identifier”。但是,我似乎找不到任何关于此属性的文档。
AzureBlobLoggerOptions 文档不包含 FileNameFormat 属性!
这个包是否应该用于.Net 5/6?
任何信息都有帮助。
提前致谢。
【问题讨论】:
标签:
c#
.net
azure
azure-web-app-service
【解决方案1】:
Microsoft.Extensions.Logging.AzureAppServices 版本 6.x 支持 .net6。您肯定可以在 .net6 中使用 AzureBlobLoggerOptions。例如,它可以与 Azure App Service -> App Service Logs -> Azure logging (blob) -> Azure Storage Account -> Blob 容器一起使用。
FileNameFormat 选项存在于包版本 6.0.9(可能还有更新的版本)中。我通过检查源代码发现它是 Func<AzureBlobLoggerContext, string> 类型的委托(您可能知道这意味着它需要一个 AzureBlobLoggerContext 类型的输入参数并返回一个字符串)。它会自动初始化(内联),设置为一个委托,该委托返回一个具有“AppName/Year/Month/Day/Hour/Identifier”格式的字符串。
BlobLoggerProvider(在日志记录配置中命名为 AzureAppServicesBlob)使用 FileNameFormat 来确定它应该如何构建 blob 文件夹结构(当它每小时创建一个新日志文件时,这取决于日志记录的数量可能会非常烦人)。您可以通过像这样重新设置 FileNameFormat 选项来更改格式(在下面的示例中,我已将格式更改为“AppName/Year/Month/Day/Identifier”)...
using Microsoft.Extensions.Logging.AzureAppServices;
builder.Services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddAzureWebAppDiagnostics();
loggingBuilder.Services.Configure<AzureBlobLoggerOptions>(options =>
{
options.BlobName = "MyLog.txt";
options.IsEnabled = true;
options.FileNameFormat = context =>
$"{context.AppName}/{context.Timestamp:yyyy}/{context.Timestamp:MM}/{context.Timestamp:dd}/{context.Identifier}";
});
});