Azure Function App如何在没有Application Insights实例的情况下记录日志

71次阅读
没有评论

问题描述

对Azure上的Function App日志记录有些困惑。他想知道除了使用Application Insights来观察通过函数应用程序上下文记录的输出之外,还有其他可用的机制吗?换句话说,是否可以在不将日志引流到Application Insights实例的情况下,临时观察日志文件或跟踪日志?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

除了使用Application Insights,还可以配置Azure Functions与NLog一起使用。以下是使用NLog和GrayLog的Azure Function示例:
1. 在Azure Function项目中添加NLog和NLog.Extensions.Logging NuGet包。
2. 在项目根目录下创建一个名为nlog.config的文件,并将以下内容复制到文件中:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"      
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      
      autoReload="true"      
      throwExceptions="false"      
      internalLogLevel="Off">
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
    <add assembly="NLog.Web.AspNetCore.Targets.Gelf"/>
  </extensions>
  <targets>
    <target xsi:type="Gelf" name="graylog" endpoint="udp://localhost:12201" facility="APM.RequestLogging.Function" SendLastFormatParameter="true" />
  </targets>
  <rules>
    <logger level="Info" writeTo="graylog" />
  </rules>
</nlog>
  1. 在Azure Function的入口函数中添加以下代码,以将NLog配置为使用nlog.config文件中的配置:
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
{
    var loggerFactory = new LoggerFactory();
    loggerFactory.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true });
    log = loggerFactory.CreateLogger("FunctionApp");

    // Your function logic here

    log.LogInformation("This is a log message");
}
  1. 在Azure Function的入口函数中使用log.LogInformation等方法记录日志。这些日志将通过NLog配置的Gelf目标发送到GrayLog服务器。
    请注意,上述示例中的nlog.config文件中的配置是将日志发送到本地GrayLog服务器的示例。你需要根据自己的需求修改endpointfacility属性。

方案2

使用第三方工具或服务来记录和观察日志可能会增加复杂性,并且需要确保与Azure Function的集成正确设置。
除了使用Application Insights和NLog,还可以考虑使用其他第三方工具或服务来记录和观察Azure Function的日志。以下是一些常见的选择:
ELK Stack:使用Elasticsearch、Logstash和Kibana来记录、处理和可视化日志。
Papertrail:提供云日志管理服务,可以轻松地将日志引流到Papertrail并进行搜索和分析。
Seq:Seq是一个现代的日志管理工具,可以帮助你轻松地记录、搜索和分析日志。
Azure Monitor:Azure Monitor是Azure提供的一种监视和诊断服务,可以帮助你收集、分析和可视化Azure资源的日志和指标。
请注意,使用第三方工具或服务来记录和观察Azure Function的日志可能会增加复杂性,并且需要确保与Azure Function的集成正确设置。你需要根据自己的需求选择合适的工具或服务,并按照它们的文档进行配置和使用。

正文完