我正在将命令行应用程序迁移到使用https://github.com/natemcmaster/CommandLineUtils进行命令行处理(以前称为const target$ = Observable.of('single value');
const [streamOne$, streamTwo$] = target$.partition((v) => v === 'single value');
// some actions with your streams - mapping/filtering etc.
const result$ = Observable.merge(streamOne$, streamTwo$)';
)。一切都很好(尽管库很固执),但是我在努力处理那些会影响我向容器中注入内容/方式的选项,即如何配置记录器。
因为这是针对Microsoft.Extensions.CommandLineUtils
全局工具的,所以我正在尝试严格遵循命令行在选项方面的功能。
我已经在我的dotnet
上找到了它:
CommandBase
现在,以前,我将首先解析命令行,然后基于此构建我的容器,然后启动要运行的命令。
[Option(CommandOptionType.SingleValue,
ShortName = "v", LongName = "verbosity",
Description = "Sets the verbosity level of the command. Allowed values are quiet, minimal, normal, detailed.")]
protected LogLevel Verbosity { get; } = LogLevel.Normal;
对于大多数事情,我可以将其反转(正如// settings coming from old parsing logic
var container = ContainerRegistration.Init(settings);
var app = new CommandLineApplication<Program> {ThrowOnUnexpectedArgument = false};
app.Conventions.UseDefaultConventions().UseConstructorInjection(container);
return app.Execute(args);
所期望的那样-因此首先构建IoC容器,然后调用CommandLineUtils
并解析命令行),但是我迷失了如何配置日志记录
有什么想法如何基于.Execute
解析结果来注册IoC对象?还是CommandLineUtils
个应用程序这样做的示例?