Je crée une application qui appelle un exécutable compilé. Le fichier de projet du code source de cet exécutable est référencé par le fichier de solution de l'application parente. L'exécutable enfant est une application de ligne de commande autonome. Le parent est effectivement un wrapper GUI à l'application de la console. Lorsque je compile l'application console, j'ai accès à toutes les fonctionnalités de log4net qui ont été intégrées dans l'application. Toutefois, lorsque je compile le projet parent qui référence les fichiers de code source de l'application console, tout fonctionne correctement mais aucun journal n'est généré. Qu'est-ce qui provoquerait cette erreur et comment cette occurrence peut-elle être corrigée? Le mécanisme de débogage interne de log4net ne lance aucun message.log4net ne crée pas de fichier journal pour un fichier de projet référencé
Répondre
Pour log4net pour démarrer l'enregistrement dans l'assemblage référencé vous devrez:
- Appelez la fonction
Configure()
de log4net soit en appelantlog4net.Config.XmlConfigurator.Configure()
au démarrage de votre application, ou en ajoutant[assembly: log4net.Config.XmlConfigurator(Watch=true)]
au fichierAssemblyInfo.cs
de votre emballage application. - Créez une section de configuration log4net dans app.config pour votre wrapper GUI si vous ne l'avez pas déjà fait. Ajoutez un fichier app.config à votre projet et copiez-y les informations de configuration log4net de la bibliothèque référencée.
- Assurez-vous que le compte exécutant l'application a accès à l'écriture et à la création de fichiers dans le répertoire des journaux (en supposant que vous utilisez la journalisation basée sur les fichiers).
Pour plus d'informations sur la configuration de votre config voir: http://logging.apache.org/log4net/release/manual/configuration.html
Je sais qu'il est trop tard, mais de toute façon juste pour la référence. Définissez log4net.Internal.Debug = true dans votre application et vous pourriez voir le problème sur la console. (faites cela par programme car votre application ne pourra peut-être pas trouver son fichier de configuration, ce qui est arrivé dans mon cas)
Sur le processus p, après avoir executé le processus avec p.start(), essayez d'écrire la sortie stdout consoler avec ça; Console.write (p.StandardOutput.ReadToEnd());
Vous devriez pouvoir voir le problème. (pourquoi log4net n'est pas configuré ou pourquoi il ne se connecte pas) Dans mon cas, il cherchait le fichier app.config dans le répertoire de travail du processus parent. (mon application et sa config sont présentes ailleurs sur le système de fichiers)
L'interface graphique a déjà implémenté correctement log4net. Les deux utilisent la méthode de décoration assemblyinfo.cs. – XBigTK13X
Si c'est le cas, la configuration de log4net devrait avoir lieu. L'application GUI dispose-t-elle d'un fichier de configuration d'application, configuré avec la section de configuration log4net? Enfin, le problème avec la journalisation de l'application GUI se produit-il tout le temps ou sporadiquement? – Joe
Chaque application possède un fichier app.config distinct configuré pour utiliser log4net. Ce problème se produit en continu, il n'y a jamais eu un moment où la journalisation était fonctionnelle dans l'application console lorsqu'elle était appelée par l'interface graphique. Quel que soit le projet défini en tant que projet de démarrage, c'est le seul qui a accès à la prise en charge de la consignation, bien que tout le reste de l'application fonctionne comme vous le souhaitez. – XBigTK13X