J'ai récemment fait du travail qui a été assez en profondeur, Je me demandais ce que vous pensez être mieux pour la journalisation. Est-il préférable de. P>
a. Chaque fois que je veux écrire à mon journal, ouvrez le fichier, écrivez-y puis fermez-le tout de suite, donc il n'y a pas de chance réelle de perdre informations dans le cas d'un échec essentiel ou d'un crash. p>
b. Enregistrer périodiquement, peut-être après que chaque section majeure a été terminée ce qui signifie que je peux réduire les effectifs là où sont les erreurs. p>
Toute autre suggestion ?? Je ne veux pas ouvrir et sauver toute la journée avec le grand volume de texte J'ai besoin d'enregistrer, mais je ne veux pas perdre ma granularité de l'information. J'écris en C ++, désolé de ne pas le mentionner avant. P>
5 Réponses :
À ma connaissance, il est assez courant (mandaté?) Pour un ruisseau, l'équivalent d'économiser.
C'est-à-dire, quand vous dites: P>
file.flush();
J'ai déjà écrit l'enregistreur de texte de base, mais je pense à l'avenir après ce projet, je vais utiliser une bibliothèque, donc grâce aux personnes qui ont laissé tomber ces bibliothèques pour moi.
sur les systèmes UNIX, vous avez appelé Syslog (qui est accessoire à la fois un appel de bibliothèque, ainsi que OpenLog et ClosElog et un service). Sous Windows, je crois qu'il y a le journal des événements, je ne connais pas l'API pour celui-là. P>
Quoi qu'il en soit, puisque Syslog (et le journal des événements dans Windows) est enregistré sur via IPC (parfois même à distance sur le réseau), le processus est découplé et ne sera pas affecté par votre programme Crashing. De cette façon, vous envahirez également la responsabilité de sauver le fichier au service Syslog. Notez que cela inclut des trucs comme la logrotation et la compression de logfiles, ainsi que de vous donner la possibilité d'utiliser des outils standardisés pour évaluer lesdits logfiles (E. G. IDS). P>
Maintenant, cela dit, le système se bloque (panne de courant ou autre) est une histoire totalement différente, je ne sais pas si c'est votre préoccupation cependant, si vous souhaitez élaborer un peu sur quel type de système Vous travaillez sur, il pourrait être plus facile de suggérer quelque chose de plus adapté. P>
Il s'agit d'une grande quantité de traitement d'image, utilisant de grandes images très grandes (3 Go +) et ayant plusieurs processus, divisant, manipulations de sous-plongée. Ainsi que des images stockées sous forme de fichiers binaires volumineux (principalement des données de hauteur et de la longitude et de la latitude) et des fichiers de traitement de chaînes qui ont des informations sur les images.
La meilleure solution consiste à utiliser une bibliothèque existante pour cela. Il existe de nombreuses bonnes bibliothèques bien testées et populaires. Ils vous donnent généralement toute la polyvalence dont vous avez besoin et vous permet de sauvegarder le mal de tête de gestion des fichiers. De plus, ils vous permettent de sauvegarder vos journaux à divers objectifs et pas nécessairement des fichiers. J'ai utilisé Google Log Bibliothèque et Ace: P>
ACE est une grosse bibliothèque et une journalisation n'est qu'une petite partie, donc si vous n'avez besoin que de la journalisation, ce n'est peut-être pas une bonne option. Quoi qu'il en soit, n'essayez pas d'implémenter vous-même vous enregistrer, économiser l'effort de quelque chose de plus utile; À moins que, bien sûr, vous avez un intérêt spécifique dans les moteurs de journalisation. P>
a. Chaque fois que je veux écrire à mon Journal, ouvrez le fichier, écrivez-y alors fermez tout de suite, donc il y a Aucune chance réelle de perdre des informations Dans le cas d'un échec critique ou Crash. p>
b. Économiser périodiquement, peut-être après Chaque section majeure a été terminée ce qui signifie que je peux limiter les bas où le les erreurs sont. p>
Toute autre suggestion ?? p> blockQuote>
Il suffit de racancer votre cerveau un peu plus longtemps - vous proposez des dizaines d'autres idées. Le problème est d'écrire un enregistreur peut être effectué aussi complexe que vous souhaitez - enregistre des logiciels à part entière. p>
ici 'S un article J'ai tout à fait aimé sur la conception des classes d'enregistrement. Jetez un coup d'œil. P>
Si vous n'êtes pas disposé à / ne pas avoir la bande passante pour soutenir la création d'un nouveau module pour la journalisation, accédez à une bibliothèque existante, car d'autres ont déjà suggéré. p>
Comment choisissez-vous la bonne bibliothèque? La chose que vous devriez vraiment vous inquiéter est de savoir quel type de journaux voulez-vous et la scène de développement que vous êtes. Triez vos messages et voyez si la bibliothèque prend en charge la classifiant de manière claire et cohérente. Avez-vous besoin de plusieurs éviers pour vos messages? Votre bibliothèque prend-elle en charge cela? Si votre code est en production, vous devrez vous inquiéter un peu plus. Avez-vous besoin d'un système de journal transactionnel? Avez-vous besoin d'atomicité des opérations (et donc de journaux)? Avez-vous besoin de la capacité de passer des messages? p>
J'espère que cela aide. P>