我正在尝试在我的ASP.NET核心MVC应用程序中配置自定义日志记录。该应用程序托管在Linux上的Azure应用程序服务(自由层)上。日志文件没有显示,我做错了什么?
我的配置:
遵循Azure核心日志记录文档(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1#azure-app-service-provider),我已经将ASP.NET应用服务日志提供程序添加到我的应用程序中:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddAzureWebAppDiagnostics();
})
.ConfigureServices(serviceCollection => serviceCollection
.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 10 * 1024;
options.RetainedFileCountLimit = 5;
})
)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseUrls("http://*:8080");
webBuilder.UseStartup<Startup>();
});App.settings中的日志配置:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}我在我的控制器中记录了一个信息,警告和一个错误。
遵循Azure文档(https://docs.microsoft.com/en-us/azure/app-service/troubleshoot-diagnostic-logs#enable-application-logging-linuxcontainer),我已经在Azure应用程序->应用程序服务日志中启用了对文件系统的日志记录:

我的应用程序部署得很好,并且工作正常。我希望在应用程序的文件系统中的某个地方找到一个名为“azure-diagnostics”的日志文件。我已经检查了文件系统,转到Azure应用程序-> SSH并运行:
find . -name '*azure-diagnostics*'它不会返回任何内容。我还使用Kudu和VS Cloud Explorer检查了文件系统,文件不在那里。如果我添加控制台日志提供程序,日志就会出现在标准的Azure日志文件中。这里我漏掉了什么?
发布于 2020-01-13 01:55:53
我不能使用Serilog日志提供程序来工作,但是我已经设法通过使用带有文件接收器的AzureWebAppDiagnostics提供程序来解决我的问题。
在program.cs中:
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File(@"../../LogFiles/azure-diagnostics-", fileSizeLimitBytes: 50 * 1024, rollingInterval: RollingInterval.Day, retainedFileCountLimit: 5)
.CreateLogger();
try
{
CreateHostBuilder(args).Build().Run();
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseUrls("http://*:8080");
webBuilder.UseStartup<Startup>();
});
}UseSeriLog()调用替换了默认的MS日志工厂,因此我也可以从应用程序设置中删除日志记录配置。
现在,我可以看到我的自定义日志文件如期出现在/home/LogFiles目录中。
发布于 2020-01-05 00:20:21
我想你也需要设置blob来存储日志,你可以尝试设置这个文件吗
.ConfigureServices(serviceCollection => serviceCollection
.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 50 * 1024;
options.RetainedFileCountLimit = 5;
}).Configure<AzureBlobLoggerOptions>(options =>
{
options.BlobName = "log.txt";
}))发布于 2020-01-06 17:27:36
日志文件的默认位置在D:\home\LogFiles\Application文件夹中,默认文件名为diagnostics-yyyymmdd.txt。
在program.cs中添加以下提供程序。
.ConfigureLogging(logging =>
{
logging.AddAzureWebAppDiagnostics();
logging.AddConsole();
})在代码中调用logger.LogWarning ("message");以写入日志文件。如果您使用LogWarning,请确保将级别设置为Warning或更详细。
请参考此issue。
https://stackoverflow.com/questions/59592417
复制相似问题