Récemment, j'ai travaillé sur un projet où, entre autres choses, nous voulons fournir un système de configuration centralisé. Nous utilisons WCF, Silverlight, C#, etc. pour créer un système distribué de services et de clients. L'une des choses que nous voudrons configurer est la journalisation. Évidemment, nous pouvons configurer log4net ou NLog via app.config ou via un fichier de configuration de journalisation séparé. Nous pouvons également configurer via le code. Je voulais voir s'il était possible de configurer via XML à partir du code. En d'autres termes, imaginez que vous ayez en mémoire (peut-être lu à partir d'une base de données?) Le code XML complet requis pour configurer l'un ou l'autre des cadres de journalisation. Peut-il être fait? Est-il possible de configurer log4net et/ou NLog via une chaîne contenant un formulaire correctement formé (dans le contexte de la structure de journalisation particulière) par opposition à la lecture du fichier ou via une configuration API "classique"? J'ai trouvé comment faire pour chacun de ces cadres de journalisation. Je ne suis pas sûr que nous allons l'utiliser, mais je pensais que je le partagerais ici sur SO, juste au cas où quelqu'un d'autre pourrait le trouver utile. Aussi, n'hésitez pas à commenter l'opportunité (ou non) de configurer les frameworks de journalisation de cette façon.Configurer log4net ou NLog avec XML à partir du code
Deux évidentes problèmes potentiels que je peux penser sont:
Il pourrait être difficile de construire XML valide (ou entrer dans la base de données). Ma première hypothèse est que l'on pourrait définir le XML de la même façon que l'on le ferait aujourd'hui. Placez-le dans un fichier app.config (ou un fichier de configuration externe), puis exécutez un programme de test pour vérifier que le fichier XML génère les résultats attendus. Comment facile ou difficile (ou impossible) sera-t-il de mettre à jour le XML dans la base de données et d'avoir le programme/service/tout ce qui réagit à la modification (comme l'utilisation de l'option ConfigureAndWatch de log4net)? Je ne suis pas aussi intéressé par la façon dont un programme ou un service sait que le XML a été mis à jour. Supposons simplement que le programme vérifiera la base de données périodiquement. Étant donné une nouvelle chaîne XML, il est assez facile de reconfigurer les cadres de journalisation.
Je vais poster ma technique comme une réponse à cette question.
La solution trouvée [ici] (http://stackoverflow.com/questions/16336917/can-you-configure-log4net-in-code-instead-of-using-a-config-file) est beaucoup plus propre. – juagicre