Pour les besoins d’un projet, je devais modifier dynamiquement le nom du fichier de traces généré par la bibliothèque Log4Net. La majorité de la configuration est située dans un fichier .config, tandis que le nom du fichier de sortie est géré à l’exécution du script.
Voici l’adaptation de mon script Powershell que j’ai dû effectuer :
# Chargement de la bibliothèque et de sa configuration. [void][Reflection.Assembly]::LoadFrom( "log4net.dll") $FileInfo=new-object System.IO.FileInfo "log4net.Config" [log4net.Config.XmlConfigurator]::Configure($FileInfo) # Configuration du nom du fichier de trace # - Récupération de l'appendre défini dans le fichier .config $hierarchy = [log4net.LogManager]::GetRepository() $appender = $hierarchy.GetAppenders() | Where-Object { $_.Name -eq "MonAppender" } # - Modification du nom du fichier log $appender.File = "E: racesout.log" $appender.ActivateOptions() # Récupération de l'objet pour gérer les traces dans le script $LogFile = [log4net.LogManager]::GetLogger($logger) $LogFile.Error("bla bla bla")
Pour info, voici à quoi ressemble le fichier de configuration :
<?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="MonAppender" type="log4net.Appender.RollingFileAppender"> <file value="E: races" /> <appendToFile value="true" /> <staticLogFileName value="false" /> <rollingStyle value="Date" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd hh:mm:ss} %-5p - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <levelMin value="DEBUG" /> <levelMax value="FATAL" /> </filter> </appender> <root> <level value="DEBUG" /> <appender-ref ref="MonAppender" /> </root> </log4net>