2010-09-25 6 views
1

Dans n'importe quelle application, nous pouvons effectuer la consignation des erreurs à l'aide d'un système de fichiers plat.Stockage des exceptions dans un fichier plat

Comment gérer un scénario lorsqu'il y a plusieurs utilisateurs ayant des exceptions qui sont enregistrées dans le même fichier plat?

Merci beaucoup.

Répondre

1

Vous pouvez créer un thread pour écrire des exceptions, en lisant à partir d'une file d'attente. Le code de gestion d'exception réel écrit l'exception dans la file d'attente. Comme il n'y a qu'un seul thread qui écrit le fichier, tout est sérialisé. Bien sûr, vous avez besoin d'une implémentation de file d'attente thread-safe, mais votre langage ou framework en fournit probablement un.

2

Vous obtiendrez un verrou en écriture sur le fichier journal avant de consigner une exception. Si quelqu'un d'autre essaie de se connecter alors que vous êtes en train d'écrire, sa demande de verrouillage attendra jusqu'à ce que vous le relâchiez. Sinon, si une telle chose est disponible, utilisez une opération d'écriture de fichier atomique pour consigner l'exception entière.

+0

Cela signifie-t-il que nous devons utiliser le filetage pour faire la même chose? Aussi, cela affectera-t-il la performance? – genericuser

+0

Oui et non. Si votre application est mono-thread, une seule instance existe et aucune autre application n'écrit dans le même fichier, aucun mécanisme supplémentaire n'est nécessaire. Cependant, la plupart des applications multi-utilisateurs sont multithread (ou multi-processus) à un certain niveau; Vous n'avez pas besoin de vous préoccuper de cela, à condition que vous vous assuriez qu'aucun processus ou thread ne puisse écrire dans le fichier en même temps. – tdammers

Questions connexes