slt à tous!
alors voilà: je code en ce moment une appli (sous Linux) comprenant 3 process, et je voudrais enregistrer tout ce qu'il se passe dans un fichier log.
ex:
[pid_process]Nom_Fonction_Appelante--Malloc OK
...
pour cela j'ai créé un ti TAD erreur:
Code :
- dans mon .h:
- #define MALLOC_OK 1
- #define MALLOC_ERROR -1
- ...
- void log(char* strFctAppelante, int iErrNo);
|
Code :
- dans mon .c:
- void log(char* strFctAppelante, int iErrNo)
- {
- FILE* file;
- file = fopen("log", "a" );
- switch(iErrNo)
- {
- case -1:{
- fprintf(file, "[%d]%s--Malloc Error!\n", getpid(), strFctAppelante);
- break;
- }
- case 1:{
- fprintf(file, "[%d]%s--Malloc OK\n", getpid(), strFctAppelante);
- break;
- }
- ...
- }
- fclose(file);
- }
|
sauf que le pb, c'est qu'au fur et a mesure que mon appli grandit, il y a de + en + d'infos à mettre en log.
je me suis donc rendu compte que l'ouverture/fermeture du fichier prennait trop de tps! et n'était pas optimal...
j'ai donc songé (un cours instant) a mettre mon descripteur de fichier en SHM... mais non.
une solution serait peut-être de faire une variable globale "FILE* file", je ne trouve pas ça très propre!
alors est-ce qqun ici aurait déjà été confronté au pb???
ps: j'ai trouvé dans un bouquin de progra C en Systeme d'Exploitation une fonction qui permettait d'écrire dans le fichier log de Linux /var/log/messages, seulement le pb qu'il faut les droits root pour lire ce fichier...
merci de votre attention!