首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为ASP.NET核心应用配置Azure应用服务日志记录提供程序?

如何为ASP.NET核心应用配置Azure应用服务日志记录提供程序?
EN

Stack Overflow用户
提问于 2020-01-05 00:02:39
回答 3查看 3.1K关注 0票数 4

我正在尝试在我的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应用服务日志提供程序添加到我的应用程序中:

代码语言:javascript
复制
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中的日志配置:

代码语言:javascript
复制
{
  "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并运行:

代码语言:javascript
复制
find . -name '*azure-diagnostics*'

它不会返回任何内容。我还使用Kudu和VS Cloud Explorer检查了文件系统,文件不在那里。如果我添加控制台日志提供程序,日志就会出现在标准的Azure日志文件中。这里我漏掉了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-13 01:55:53

我不能使用Serilog日志提供程序来工作,但是我已经设法通过使用带有文件接收器的AzureWebAppDiagnostics提供程序来解决我的问题。

在program.cs中:

代码语言:javascript
复制
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目录中。

票数 3
EN

Stack Overflow用户

发布于 2020-01-05 00:20:21

我想你也需要设置blob来存储日志,你可以尝试设置这个文件吗

代码语言:javascript
复制
.ConfigureServices(serviceCollection => serviceCollection
                .Configure<AzureFileLoggerOptions>(options =>
                {
                    options.FileName = "azure-diagnostics-";
                    options.FileSizeLimit = 50 * 1024;
                    options.RetainedFileCountLimit = 5;
                }).Configure<AzureBlobLoggerOptions>(options =>
                {
                    options.BlobName = "log.txt";
                }))

检查SAMPLE app

票数 0
EN

Stack Overflow用户

发布于 2020-01-06 17:27:36

日志文件的默认位置在D:\home\LogFiles\Application文件夹中,默认文件名为diagnostics-yyyymmdd.txt

在program.cs中添加以下提供程序。

代码语言:javascript
复制
.ConfigureLogging(logging =>
{
    logging.AddAzureWebAppDiagnostics();
    logging.AddConsole();
})

在代码中调用logger.LogWarning ("message");以写入日志文件。如果您使用LogWarning,请确保将级别设置为Warning或更详细。

请参考此issue

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59592417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档