Bonjour, Je vais exposer plus précisément mon problème d'origine ( quelques posts plus bas) ainsi que la seule solution que j'ai trouvée pour le moment ( non testé).
Je vous présente ma solution car elle me parait assez couteuse en temps pour un class de log qui se veux discrète et très légère.
Au début de mon prog, j'ai une ptite phase d'initialisation dan laquelle je cré un fichier ( le rempalce, vide si existant ) de log, dans lequel j'insérer quelques balises xml, dont une ouverte, destiné a contenir tout mes log .
Ensuite dans mon prog j'ajoute en fin de fichiers des balises ( qui seront contenu dans celle ouverte précédement ) pour chaque log.
Enfin lors de phase de fermetur de mon programme j'ajoute la balise de fin ( sa fermeture).
Tout va bien dans le meilleur des monde, *sauf* que lors d'un crash avant la phase de fermeture, je me retrouve avec un fichier xml mal formé ( absence de la fermeture de la balise root ) et donc inexploitable a mois de modifier moi même le fichier à la main, ce qui devient TRES vite fastidieux après la 10ième fois.
Il me faut donc un moyen d'avoir quoi qu'il arrive un fichier xml bien formé.
Je ne connais pas de solution pour faire ca a la volée lors de l'ouverture de mon document par IE par exemple. [ le document xml est transformé en xhtml par du xslt ].
Seul moyen que j'ai trouvé :
//Initialisation
Créer le fichier au départ, en gardant en mémoire la position (seekp() sur notre stream ) de l'endroit juste aprés que la balise principale soit ouverte.
// A chaque log
On se place en "position" et on ajoute ce qu'on doit ajouter, puis on garde la position en fin d'ajout en mémoire . Et ensuite on ajoute la fermeture de la balise principale.
// Phase de fermeture
Rien
Ca me parait assez barbare mais je ne voit pas mieux ... vous avez des idées?
Partager