Azure functions 登录Azure函数

Azure functions 登录Azure函数,azure-functions,azure-application-insights,Azure Functions,Azure Application Insights,我使用TraceWriter类在azure函数中编写日志。当函数很小时,它非常好,我能够在函数Monitor部分和ApplicationInsight中看到日志 现在我正在构建一个应用程序,并希望通过DI在应用程序(Web、作业和函数)中使用通用日志记录 IILogger接口,它很容易被TraceWriter替换,但对于我的其他应用程序(Web和作业),我想使用我自己的DI解决这个问题,但我无法找到实现的类 看起来不错,但我不想在方法参数中的任何地方使用traceWriter 知道如何解决ILo

我使用TraceWriter类在azure函数中编写日志。当函数很小时,它非常好,我能够在函数Monitor部分和ApplicationInsight中看到日志

现在我正在构建一个应用程序,并希望通过DI在应用程序(Web、作业和函数)中使用通用日志记录

IILogger接口,它很容易被TraceWriter替换,但对于我的其他应用程序(Web和作业),我想使用我自己的DI解决这个问题,但我无法找到实现的类

看起来不错,但我不想在方法参数中的任何地方使用traceWriter

知道如何解决ILogger或自定义实现吗?这将在应用程序之间工作,我希望在ApplicationInsights中发送日志,并希望使用function monitor部分进行监视

到现在为止,我正在使用下面的自定义代码

public class Log : ILog
{
private static TelemetryClient telemetryClient = new TelemetryClient() { InstrumentationKey = ConfigurationManager.AppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] };

public void Error(string message, Exception ex = null)
{
    telemetryClient.TrackTrace(message, SeverityLevel.Error);
    if (ex != null)
        telemetryClient.TrackException(ex);
}

public void Info(string message)
{
    telemetryClient.TrackTrace(message, SeverityLevel.Information);
}

public void Verbose(string message)
{
    telemetryClient.TrackTrace(message, SeverityLevel.Verbose);
}

public void Warning(string message)
{
    telemetryClient.TrackTrace(message, SeverityLevel.Warning);
}

public TelemetryClient TelemetryClient
{
    get
    {
        return telemetryClient;
    }
}

}

我一直在寻找一种方法来包含登录服务,我发现您不能在这两个版本中使用
ILogger
ILogger
,因为
ILogger
不会显示在函数的日志中

这就是为什么我创建了一个with依赖注入,它对函数使用
ILogger
,对引用的服务使用
ILogger

这样做的好处是,您不需要更改引用服务中的代码就可以实现这一点。包括的LoggingService和GenericLoggingService允许您自定义日志记录


请注意,这项工作目前正在进行中。我还没有在Azure上测试它。

你的意思是你想要一个使用ILogger的通用日志类,它可以在web、web作业和函数中工作吗?是的,使用common place来设置日志接收器(截至目前的Application Insight),它看起来适合一个小型解决方案,但我们有一个多层项目,需要在所有类库项目(BAL、DAL)中注入ILogger依赖项。我添加了当前实现的代码。我将尝试您的解决方案,感谢您将代码放入Github