当前位置: 首页 > 知识库问答 >
问题:

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

董新觉
2023-03-14

我正在尝试在ASP中配置自定义日志记录。NET核心MVC应用程序。该应用程序托管在Linux上的Azure应用程序服务上(免费层)。日志文件没有出现,我做错了什么?

我的配置:

以下ASP。NET Core日志记录文档(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1#azure应用程序服务提供商),我已将azure应用程序服务日志提供商添加到我的应用程序:

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>();
                });

应用程序中的日志记录配置。设置:

{
  "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-应用程序日志记录linuxcontainer),我已在Azure应用程序中启用了文件系统日志记录-

我的应用程序部署良好且工作正常。我希望在应用程序的文件系统中的某个地方找到一个名为“azure-诊断”的日志文件。我已经通过转到Azure应用程序检查了文件系统-

find . -name '*azure-diagnostics*'

不会返回任何内容。我还使用Kudu和VS Cloud Explorer检查了文件系统,文件不在那里。如果我添加控制台日志提供程序,日志将显示在标准Azure日志文件中。我错过了什么?

共有3个答案

夏法
2023-03-14

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

在程序中添加以下提供程序。反恐精英。

.ConfigureLogging(logging =>
{
    logging.AddAzureWebAppDiagnostics();
    logging.AddConsole();
})

调用记录器。日志警告(“消息”) 在代码中写入日志文件。如果使用日志警告,请确保将级别设置为警告或更详细。

请参考本期。

林星阑
2023-03-14

我想你也需要设置用于存储日志的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";
                }))

检查示例应用程序

齐鸿光
2023-03-14

我无法使用AzureWebApp诊断日志提供程序使其工作,但我已经通过使用带有文件接收器的Serilog提供程序来解决我的问题。

在程序中。反恐精英:

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目录中看到我的自定义日志文件。

 类似资料:
  • 我试图使用Azure CLI配置Azure Web应用的应用程序日志记录(Blob)和Web服务器日志记录(存储)设置。 我正在使用以下命令创建存储容器: az存储容器创建--帐户名StorageAccName--名称ContainerName--身份验证模式登录 但是,我无法链接Web应用中的存储设置以使用新容器。 我在参考留档里找不到任何东西。 https://docs.microsoft.c

  • 本文向大家介绍如何配置Spring Boot应用程序日志记录?相关面试题,主要包含被问及如何配置Spring Boot应用程序日志记录?时的应答技巧和注意事项,需要的朋友参考一下 Spring Boot附带了对Log4J2,Java Util Logging和Logback的支持。它通常预先配置为控制台输出。可以通过仅在application.properties文件中指定logging.leve

  • 我目前正在使用Azure'Web应用Linux',它利用docker容器通过私有注册表(Azure容器注册表)托管java应用和python应用,我还没有找到收集和分析应用程序日志的方法容器。 目标是通过OMS、application insight或storage analytics分析应用程序日志。我知道“linux上的Web应用程序”仍处于预览状态,但没有关于当前支持哪些功能的官方文档。 A

  • 我已在单独的Weblogic域中成功配置了SAML 2.0身份提供程序 我们在另一个域的Weblogic中部署了一个ADF应用程序,该应用程序具有非SAML基于表单的身份验证(ReadOnlySQLAuthenticator用于验证凭据) 我想将第二个域配置为服务提供者(以使现有应用程序能够使用身份提供者登录)。 我做了以下工作: 配置SAML 2.0 Identity Asserter 在服务器

  • 问题内容: 我在Azure上有一个node.js api应用程序。我经常将每个请求记录到。如何保存和读取日志文件?我启用了BLOB日志记录。我的存储中唯一显示的是一堆csv文件。这是一个例子: 我打印到的日志在哪里? 问题答案: 1)在根文件夹()中创建文件(如果不存在)。 2)在其中添加以下几行。 完成后,您可以在中找到日志。 有关更多信息,请参阅https://docs.microsoft.c

  • 我正在将我的应用程序从JBoss 6 AS迁移到Wildfly 8.2.0 AS。我可以实现按预期创建应用程序日志,但需要独立/日志/服务器。日志文件中也充满了应用程序日志。我正在使用独立的完整ha。xml配置。任何人都可以建议一个选项,禁止将应用程序日志填充到服务器中。日志 以下部分摘自standalone-full-ha.xml: