关于如何连接持久函数依赖项注入的示例



在Visual Studio 2017中成功创建并运行了一个简单的Azure耐用函数后,我想介绍日志记录。

Visual Studio项目模板使用运行包含Microsoft类型可选参数的方法。扩展。日志记录。I记录器。

我不知道如何将依赖项注入连接到一个持久的函数项目中。有人能给我举一个如何实现这一目标的例子吗?

在我看来,我需要一些类,在其中我需要使用微软。扩展。日志记录。LoggingFactory。CreateLogger((方法。

我想这个逻辑需要在一个容器类中,该容器类以某种方式使用HostBuilder(类似于在静态主方法中使用WebHostBuilder(挂接到运行时管道中。

谢谢

@Thomas给我举了一些例子,我在编写持久函数项目时使用这些例子来提取允许依赖项注入工作的代码:

using System.IO;
using System.Reflection;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NLog;
using NLog.Extensions.Logging;
using tmetadastoreFnApp;
using Willezone.Azure.WebJobs.Extensions.DependencyInjection;
using ILogger = Microsoft.Extensions.Logging.ILogger;
using LogLevel = Microsoft.Extensions.Logging.LogLevel;
[assembly: WebJobsStartup(typeof(Startup))]
namespace tmetadastoreFnApp
{
internal class Startup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder) =>
builder.AddDependencyInjection(ConfigureServices);
private void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ILoggerFactory, LoggerFactory>();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
services.AddLogging((builder) => builder.SetMinimumLevel(LogLevel.Trace));
var serviceProvider = services.BuildServiceProvider();
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
loggerFactory.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true });
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
LogManager.LoadConfiguration(Directory.GetParent(dir) + "\nlog.config");
}
}
}

最新更新