【发布时间】:2018-07-16 07:53:41
【问题描述】:
我主要为我的 API 构建我的服务,因此它们都在其构造函数中注入了 ILogger。 (Azure 网络应用)
现在我也在 Azure 中使用 Web 作业,并按照以下说明使用 DI 构建它:https://matt-roberts.me/azure-webjobs-in-net-core-2-with-di-and-configuration/
我现在的问题是,我希望 service.logger 实例登录到 Azure BlobStorage 以进行 Web 作业。 通过绑定,我得到了时间触发函数的 ILogger 实例。但是如何将服务日志记录到 BobStorage?
提前致谢。
loggerFactory.AddConsole();
loggerFactory.AddAzureWebAppDiagnostics();
public async Task TimeJob(
[TimerTrigger("0 */5 * * * *", RunOnStartup = true)] TimerInfo timerInfo,
ILogger log
)
....
编辑
IServiceCollection services = new ServiceCollection()
.AddLogging(config =>
{
config.AddConfiguration(configuration.GetSection("Logging"));
config.AddConsole();
config.AddAzureWebAppDiagnostics();
})
.AddSingleton(configuration)
;
// register services and such
configurationCallback(services);
return services.BuildServiceProvider();
.
Program.Configuration = SetupHelper.SetupConfiguration(args);
Program.Services = SetupHelper.SetupServiceProvider(Program.Configuration, Program.ConfigureServices);
var loggerFactory = Program.Services.GetService<ILoggerFactory>();
var hostConfig = new JobHostConfiguration(Program.Configuration)
{
JobActivator = new CustomJobActivator(Program.Services),
LoggerFactory = loggerFactory
};
hostConfig.Queues.MaxPollingInterval = TimeSpan.FromSeconds(10);
hostConfig.Queues.BatchSize = 1;
hostConfig.UseTimers();
//hostConfig.Tracing.ConsoleLevel = TraceLevel.Off;
if (hostConfig.IsDevelopment)
{
hostConfig.UseDevelopmentSettings();
}
var host = new JobHost(hostConfig);
host.RunAndBlock();
示例服务
public abstract class Service : IService
{
protected readonly ILogger Logger;
protected readonly IUserInfo UserInfo;
protected bool Disposed;
protected Service(
ILogger logger,
IUserInfo userInfo)
{
this.Logger = logger;
this.UserInfo = userInfo;
}
public abstract void Dispose();
【问题讨论】:
标签: azure logging dependency-injection azure-webjobs