问题描述
我有一个基本的 Powershell CmdLet
类来构建 static IServiceProvider
。从这个抽象 CmdLet
派生的类然后利用 IServiceProvider
进行 DI。因为 IServiceProvider
是 static
,它每个 Powershell 会话构建一次,而不是每次执行任何派生的 CmdLet 时构建。
各种服务包括带有 Microsoft.Extensions.Logging.ILogger
的构造函数。我希望这些服务发出的日志在 Powershell 会话中发出。例如,当调用 ILogger.LogTrace()
时,我希望将其传递给 CmdLet.WriteVerbose()
方法。
我已经按照以下方式创建了一个 CmdletLogger
类:
public CmdletLogger(Cmdlet cmdlet,string categoryName): ILogger
{
// ILogger interface implemented,using cmdlet.Write* methods.
}
我想通过 CmdletLogger
提供 IServiceProvider
,但我不知道如何从 {{ 1}} 类:
CmdLet
我意识到我可以使 CmdletLoggerProvider
非静态,并在连接日志记录时将 public class CmdLetLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string categoryName)
{
// detect the currently running CmdLet here,so I can construct a CmdletLogger
}
}
传递给 IServiceProvider
类,但是重新生成的性能影响为单个 CmdLet
会话中执行的每个 CmdletLoggerProvider
构建 IServiceProvider
是......不值得。
我希望 Powershell 有类似于 IHttpContextAccessor
的东西,但我一直找不到这样的东西。
作为参考,抽象的 CmdLet
类如下所示:
Powershell
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)