Project

General

Profile

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().