Comment écrire en toute sécurité dans un fichier journal de deux instances de la même application?

StackOverflow https://stackoverflow.com/questions/1300629

  •  18-09-2019
  •  | 
  •  

Question

J'ai une demande qui ne peut avoir une instance en cours d'exécution à chaque fois, si une 2ème instance est lancé, il doit être connecté à un fichier journal commun que le premier pourrait aussi utiliser.

Je le chèque de combien d'instances en cours d'exécution et je comptais sur elle se connectant simplement à l'enregistreur d'événements au départ, mais l'application peut être en cours d'exécution dans le contexte de l'utilisateur ou du système et des exceptions sont levées lors d'une tentative d'interroger la source de eventlog comme utilisateur de sorte que cette idée soit mis au rebut comme les journaux de sécurité ne sont pas accessibles à l'utilisateur.

Alors, je voulais savoir ce que la méthode la plus sûre d'avoir 2 cas séparés de la même écriture d'application dans un fichier journal serait qui assurerait à la fois avoir l'occasion d'écrire à lui.

Je préférerais ne pas utiliser un cadre supplémentaire existant si évitable

Toute aide appréciée.

Était-ce utile?

La solution

mutex pourrait être utilisé pour la synchronisation interprocessus d'une ressource partagée comme le fichier journal. Voici un exemple .

Autres conseils

Vous pouvez toujours écrire dans le journal des événements système. Aucun verrouillage ou quoi que ce soit nécessaire et l'observateur d'événements est plus robuste que certains lui donnent crédit.

En réponse à votre commentaire, un autre utilisateur a posé la question sur les autorisations d'écriture pour le journal des événements sur le SO. La réponse liée à l'article msdn qui décrit comment effectuer cela.

Voir cette question .

Vous pouvez esquiver le problème si vous préférez ...

Si cela est une application Windows, vous pouvez envoyer d'abord un message, puis vient de quitter. A la réception du message, l'instance d'origine peut écrire dans le fichier journal sans aucun problème.

Pourquoi ne pas utiliser syslog protocole? Cela vous permettra de livrer les journaux d'une manière très fondée sur des normes et flexible. Le protocole lui-même est assez simple, mais il y a beaucoup d'exemples sur le net, par exemple . Si votre application est destinée à l'utilisation de l'entreprise, ayant un moyen standard de l'exploitation forestière pourrait être un gros plus. (Et, vous n'avez pas besoin de conserver les fichiers soit - il devient un emploi d'un logiciel spécialisé qui fait exactement cela)

Une façon de le pirater serait de mémoire mapper le fichier journal. De cette façon, les deux instances de l'application partagent la même image de la mémoire virtuelle du fichier. Ensuite, il y a plusieurs façons de mettre en œuvre un mutex dans le fichier.

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