Set-LogActiveProperty¶
function global:Set-LogActiveProperty([String] $Name, [ScriptBlock] $Script)
Crée, dans le contexte global, une propriété $Name hébergeant un objet de type PSObject. Le scriptblock $script contient le code redéfinissant sa méthode ToString. Les deux paramètres sont obligatoires.
Set-LogActiveProperty "CallStack" { $(ParseStack $(Get-CallStack)) }
Le code du Framework log4net fait appel en interne, lors d'un affichage d'une chaîne de formatage, à la méthode ToString de l’objet contenu dans une propriété. On doit créer un objet personnalisé redéclarant sa méthode ToString :
$logpattern = "[%thread] %-5level [%x] %property{CallStack} - %message%newline" $Obj = new-object System.Management.Automation.PSObject $Obj|Add-Member -Force -MemberType ScriptMethod ToString { $(ParseStack $(Get-CallStack)) } [log4net.GlobalContext]::Properties["CallStack"]=$Obj Function Une { $LogMain.Info("Dans la fonction Une")}
Pour un objet natif il suffit de l'adapter (PSObject) en redéclarant sa méthode ToString().