Question

J'ai une application c ++ qui enregistre dans un fichier à l'aide de log4cxx (RollingFile appender). Je souhaite me connecter au même fichier, au même moment, à partir d'un autre module écrit en c #; donc j'ai configuré log4net pour utiliser le même fichier, mais je ne peux pas obtenir les nouveaux messages. Si je désactive la journalisation c ++, je peux voir les messages c #. Donc, je pense que c'est un problème de verrouillage, et a cherché une option de configuration pour dire à log4cxx de ne pas verrouiller le fichier. Je suis entré dans le modèle MinimalLock pour log4net, mais je n’ai rien trouvé dans log4cxx. Quelqu'un sait-il si cela peut être fait et comment?

merci d'avance,

Ernesto Cullen

Était-ce utile?

La solution

Je pense que vous pourriez rencontrer des problèmes de simultanéité et de conflit, quelle que soit la configuration que vous utilisez, tant que vous tentez de vous connecter à deux processus différents dans le même fichier.

Vous devriez envisager d'envoyer des événements de journal des deux processus à un troisième emplacement centralisé - consultez RemotingAppender dans log4net, je suppose que log4cxx a quelque chose de similaire.

Autres conseils

Même si la question est assez ancienne (et marquée comme réponse) et que vous avez probablement déjà terminé votre projet:

log4net et log4cxx sont des framworks de journalisation distincts qui ne se connaissent pas. Vous ne pouvez donc pas les configurer pour écrire dans le même fichier. Le fichier est ouvert en écriture pour un seul des projets framworks, le premier des deux prévalant.

Ce que j'ai fait dans une situation similaire (une application c ++ héritée avec une journalisation personnalisée et un nouveau module c # à l'aide de log4net) est crée un appender personnalisé log4net qui transfère les traces dans l'ancien environnement de journalisation. Dans le projet auquel j’étais impliqué, l’ancien code C ++ disposait d’une interface Windows COM pour écrire les messages de journal utilisés par l’appendeur personnalisé.

Une autre solution consiste à utiliser C ++ / CLI pour créer l'appender personnalisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top