[VisualC++] Création de fichier log

Fermé
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 - 7 août 2007 à 00:17
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 11 août 2007 à 05:00
Quelqu' un peut il me donner d' idée sur la création de fichier log
pour garder traçe de l'exécution des fonctions d' une dll.
Je tente avec fopen et stderr mais rien de concret
Ce que je veux est que le fichier log garde l' information
sur toutes les grandes étapes d' exécution de mon programme
afin de pouvoir m' indiquer quelle partie s' est bien déroulée
et quelle partie ne l' a pas été
Car ceci me permettra de savoir réellement où se pose un problème
Merci de m' éclairer svp
Je compte sur vous !!!
A voir également:

15 réponses

mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
9 août 2007 à 00:38
Ben ca c'est ton programme qui doit le gérer. Tu peux compléter la fonction write_log que je t'ai donné en utilisant ça pour récupérer la date :
aidez moi en c borland
#include <fstream>
#include <ctime>

void write_log(const char *msg,const char *filename_log = "plop.log"){
  std::ofstream ofs(filename_log,std::ofstream::app); // fichier de log ouvert en append
  if(ofs){
    time_t a;
    time(&a);
    ofs << ctime(&a) << ' ' << msg << std::endl;
  }
  ofs.close();
}

Ensuite à toi d'appeler write_log dans tes fonctions a bon escient.
void f(){
  write_log("entre dans f");
  // ... code de la fonction f
  write_log("sort de f");
}

Bonne chance
2
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
10 août 2007 à 22:35
normalemenet la dll seront utilisées par le winlogon.
1
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
11 août 2007 à 05:00
Désolé je comprends pas. Je ne connais pas windows. Pour moi un programme ça peut utiliser des librairies, donc libre à toi d'appeler les fonctions de cette librairie que tu veux. Je ne comprends pas ce qeu tu veux faire peut-être. Reviens à un problème C++ sinon je ne peux pas t'aider.

Bonne chance
1
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
7 août 2007 à 20:59
Ben peu importe que ce soit dans une dll ou un programme classique, tu ouvres un std::ofstream et tu écris dedans s'il est bien ouvert. A la fin tu le fermes et c'est fini.
#include <fstream>
#include <iostream>


int main(){
    const char *filename = "plop.log";
    std::ofstream ofs(filename);
    if(!ofs){
        std::cerr << "impossible d'écrire dans [" << filename << ']' << std::endl;
        throw;
    }
    //...
    ofs << "debut" << std::endl;
    //...
    ofs << "etape 1" << std::endl;
    //...
    ofs << "etape 2" << std::endl;
    //...
    ofs << "fin" << std::endl;
    ofs.close();
    return 0;
}

On compile et on exécute :
(mando@aldur) (~) $ g++ -W -Wall plop.cpp
(mando@aldur) (~) $ ./a.out

On vérifie que plop.log contient bien les messages :
(mando@aldur) (~) $ cat plop.log
debut
etape 1
etape 2
fin

Bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
8 août 2007 à 05:28
merci pour ta réponse
mais un souci
peut tu etre un peu plus clair dans ton explication
car c' est ma 1ere utilisation de fichier log

je met ton code directement dans le code source de mon programme ou je crée un nouveau fichier?
comment dois je faire *
Je compte sur ta réponse
0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
8 août 2007 à 09:54
En fait il faut bien comprendre que créer fichier de log, ça consiste juste à ouvrir une fichier et écrire dedans. Quand tu ouvres un fichier,
- soit tu le réecris (w = write),
- soit tu écris à la suite de son contenu (a = append).

Pour ouvrir un fichier tu peux sois utiliser
- soit les ofstream du C++ (les flux dans un fichier de sortie, header <fstream>),
- soit fopen (qui vient du C, header <cstdio>).
Si tu es arrivé à l'ouvrir (tester le retour de fopen ou vérifier que le std::ofstream crée est valide), tu peux commencer à écrire dedans, et le fermer une fois que tu as fini d'écrire dedans.

L'exemple que je te donne te montre comment utiliser un std::ofstream de manière usuelle, après il faut l'adapter à ton code. Dans ton cas on pourrait imaginer que tu crées une fonction qui ouvre un fichier en append (le fichier de log) à chaque fois que tu en as besoin. Exemple :
void write_log(const char *msg){
  std::ofstream ofs("plop.log",std::ofstream::app); // fichier de log ouvert en append
  if(ofs) ofs << msg << std::endl;
  ofs.close();
}

Bonne chance
0
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
8 août 2007 à 22:50
Merci mamiemando
J' explore ta piste et je te tiendrai au courant
Toutefois une précision : le fichier log que je souhaiterais faire , est un fichier où non seulement je pourrai écrire du texte ,mais il faudra que le systeme y ecrive aussi afin de me retracer exactement comment s' est passé l' exécuton du programme ; par exemple tel fonction est bien exécutée à tel heure et a généré tel valeur ...... tel autre fonction n' a pas pu etre exécuté pour telle raison; telle fonction a été appellée à tel et tel niveau
toutes les explication me seront utiles
Encore merci
0
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
9 août 2007 à 12:19
t' es génial
je me met tout suite au travail je te tiens au courant
merci
0
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
9 août 2007 à 14:14
c' est bon mamiemando
ca compile
mais ou se trouve le fichier plop.log
je veux l' ouvrir pour voir son contenu

je compte sur ta réponse
merci
(excuse moi si je pose des question trop ...)
0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
9 août 2007 à 20:55
Il se trouve dans le répertoire depuis lequel tu as lancé ton exécutable. Pas de souçis pour les questions tu es en bonne compagnie ;)
0
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
10 août 2007 à 07:35
en fait je ne sais comment t' expliquer je ne peux lancer l' executable
car aucun autre projet ne fait appel aux fonction de la dll
t' as une idée
0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
10 août 2007 à 10:02
En fait j'ai surtout pas compris à quoi servait la dll si elle n'est pas utilisée. Au pire pour debugger ta dll tu crées un exécutable qui appelle spécifiquement les fonction à tester.

Bonne chance
0
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
10 août 2007 à 10:17
en fait elle est destinée à l' utilisation par un système pour la gestion de mot de passe
0
GNONGNON Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 10 août 2007 1
10 août 2007 à 10:34
es ce que tu comprends mon problème !
0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
10 août 2007 à 15:22
Ben non je comprends pas où est le problème. Fais un programme qui utilise cette librairie pour la tester. Je comprends pas ce qui te bloque.
0