Frage

Ich habe eine c ++ Anwendung, die bis zu einem gewissen Datei mit log4cxx (RollingFile appender) protokolliert. Ich möchte in die gleiche Datei protokollieren, die gleichzeitig von einem anderen Modul in c # geschrieben; so konfigurierte i log4net die gleiche Datei zu verwenden, aber ich kann nicht die neuen Nachrichten in bekommen. Wenn ich die c ++ Protokollierung zu deaktivieren, kann i c # Nachrichten sehen. Also ich denke, es ist ein Sperr Problem ist, und suchte nach einer Konfigurationsoption zu sagen log4cxx nicht die Datei zu sperren. Ich kam in MinimalLock Modell für log4net, konnte aber nichts in log4cxx finden ... weiß jemand, ob es getan werden könnte, und wie?

Vielen Dank im Voraus,

Ernesto Cullen

War es hilfreich?

Lösung

Ich denke, dass Sie in Parallelität und Konkurrenzprobleme führen könnte, egal welche Konfiguration Sie verwenden, solange Sie zwei verschiedene Prozesse auf die gleiche Datei einloggen müssen versuchen.

Sie sollten von beiden Prozesse Protokollereignisse sendet an eine dritte, zentrale Lage suchen in - werfen Sie einen Blick auf RemotingAppender in log4net, gehe ich davon aus log4cxx etwas ähnliches hat.

Andere Tipps

Auch wenn die Frage schon recht alt ist (und markiert als beantwortet) und Sie werden wahrscheinlich schon mit Ihrem Projekt beendet:

log4net und log4cxx unterscheiden Protokollierung Framworks, die nicht wissen voneinander, so dass Sie sie nicht konfigurieren können auf die gleiche Datei zu schreiben. Nur einer der Framworks wird die Datei zum Schreiben geöffnet hat, je nachdem was zuerst war.

Was ich in einer ähnlichen Situation (ein Vermächtnis c ++ Anwendung mit einem maßgeschneiderten einem neuen c # Modul mit log4net Protokollierung) getan habe, ist erstellen Sie eine benutzerdefinierte log4net Appender , die Spuren in die alte Logging-Framework weiterleitet. In dem Projekt, bei dem ich den alten C ++ Code hatte eine Windows COM-Schnittstelle für das Schreiben von Protokollmeldungen beteiligt war, die die benutzerdefinierten appender verwendet.

Eine andere Möglichkeit wäre C ++ / CLI werden mit der benutzerdefinierten appender erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top