"The configuration section for Logging cannot be found in the configuration source." ou comment lire un fichier de configuration externe pour le Logging Application Block

Dans le cadre du Logging Application Block, l'utilisation d'IConfigurationSource pour lire une configuration externe peut provoquer une ConfigurationErrorsException("The configuration section for Logging cannot be found in the configuration source."), ou ne pas prendre en compte la configuration décrite dans le fichier externe. Cette exception est généralement dûe au fait que la façade Logger s'initialise forcément avec le fichier de configuration de l'application, et non avec celle que l'on a précédemment précisé via l'IConfigurationSource. Il faudra donc éviter d'utiliser la classe Logger dans ce cas d'utilisation, mais plutôt le LogWriter créé depuis l'IConfigurationSource.

// Lecture d'un fichier de configuration du Logging Application Block depuis

// un chemin quelconque

var fcs = new FileConfigurationSource(@"C:\TEMP\MyLoggingConfiguration.config");

var logWriter = new LogWriterFactory(fcs).Create();

var logEntry = new LogEntry() { Message = "Hello logging!" };

// On peut utiliser le logWriter directement

logWriter.Write(logEntry);

// Lève une ConfigurationErrorsException "The configuration section for Logging cannot be found in the configuration source."

// Car la facade Logger qui s'initialise forcément avec le fichier de configuration de l'application, et non celui que l'on

// a spécifié manuellement (EntLib 4.1)

Logger.Write(logEntry);

Merci à Renaud pour sa question intéressante !