【发布时间】:2021-11-08 14:56:18
【问题描述】:
从Console Application Startup Template 开始,我想注册、配置和使用Logger(Microsoft、Serilog 或任何其他;我不介意)和FluentScheduler。
这是我从初始模板更改的代码,但它不起作用:Logger 始终设置为 NullLogger :-(
class Program {
static async Task Main(string[] args) {
await CreateHostBuilder(args).RunConsoleAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(build => {
build.AddJsonFile("appsettings.secrets.json", optional: true);
})
.ConfigureServices((hostContext, services) => {
// === TRY CFG LOGGER HERE - start
services.AddLogging(cfg => {
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true)
.Build();
cfg.AddConfiguration(configuration);
});
// === TRY CFG LOGGER HERE - end
services.AddHostedService<ConsoleTestAppHostedService>();
});
}
public class ConsoleTestAppHostedService : IHostedService {
// ... see https://docs.abp.io/en/abp/latest/Startup-Templates/Console
}
public abstract class AbstractAbpJob : IJob, ITransientDependency {
public ILogger Logger { get; set; } // <=== it not injected
public AbstractAbpJob() {
Logger = NullLogger<AbstractAbpJob>.Instance;
}
public abstract void Execute();
}
请帮忙。
【问题讨论】:
-
尝试过构造函数注入吗?
-
另外,您需要为 ILogger 定义一个目录。在您的情况下,应该是
ILogger<AbstractAbpJob>
标签: logging dependency-injection console-application abp