【发布时间】:2019-03-15 12:04:14
【问题描述】:
我正在尝试将 nlog.dll 包装在一个模块中,以便我可以为多个脚本重用该机制。
在模块中我这样做:
Set-StrictMode -Version Latest
function Get-NewLoggerTest() {
[CmdletBinding(SupportsShouldProcess=$true)]
Param (
[Parameter(Mandatory=$true,HelpMessage="Provide the name of the logger.")]
[string]$loggerName
)
[Reflection.Assembly]::LoadFile("C:\Program Files\WindowsPowerShell\Modules\ToolsTest\nlog.dll")
# Creater logger object
$logger = [NLog.LogManager]::GetLogger($loggerName)
return $logger
}
Export-ModuleMember -Function Get-NewLoggerTest
现在我通过发出以下命令创建一个新的记录器:
Import-Module ToolsTest -Force
# Create a new logger
$logNew = Get-NewLoggerTest -loggerName "TEST Logger"
我现在遇到的问题是我必须通过使用来引用日志记录对象
$logNew[1].Debug("Debug Message")
$logNew.Debug 返回错误,因为返回了多个对象。
如果我这样做
$newLog | gm
它返回多个类型名称:
类型名称:System.Reflection.RuntimeAssembly 类型名称:NLog.Logger我只关心 NLog 一个,有什么想法可以摆脱另一个吗?
当然我可以像这样重新分配它
$logNew = $logNew[1]
但这是我想避免的额外步骤。
【问题讨论】:
-
我不确定这是 PS 还是 NLog 问题。无论如何,你可以在
Get-NewLoggerTest中做return @($logger)[1]。 -
其他使用 NLog 和 PowerShell 的人:github.com/NLog/NLog/issues/233
标签: powershell module nlog