begin process at 2008 08 21 05:32:18
1 229 221 membres
52 nouveaux aujourd'hui
14 260 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : fichier de log [ Divers / Débutant(e) ] (unlimited72)

fichier de log le 18/07/2008 14:29:45

unlimited72
Bonjour,

J'ai un petit soucis, je souhaite faire des stats dans mes méthodes pour cela j'ai crée un fichier de log (LogPerf), lequel j'appel a chaque entrée et sortie de méthode tout marche bien sauf pour une méthode :

// permet de construire le contenu de l'url qui sera renvoyé dans la methode POST
void ConstruireURL(char* composant)
{
    LogPerf("ConstruireURL", "E");
    if(temp!=NULL)
    {
        URL = strcat(temp,composant);                // si tampon existe deja, alors on concatene
    }
    else
    {
        URL = strcpy(temp,composant);                // si tampon est vide, alors on copie
    }
    LogPerf("ConstruireURL", "S");

}

mon appli doit se connecter lorsqu'en entrée je ne fait pas de log l'appli se connecte correctement mais lorsque je fais le log j'ai un refus de connection je ne comprend pas pourquoi l'appel et l'écriture dans le fichier empêche ma connection.

Code Fichier log :

int evenement=0;
void LogPerf(char* chain, char* sens) //j'ouvre le fichier au debut du WinMain
{
      //  char* logPerf="C:\\TMP\\logPerf.txt";   
     //    file_log = fopen(logPerf, "a");
        SYSTEMTIME now;
        GetLocalTime(&now);
        TCHAR heures[10];
       
        sprintf(heures,TEXT("%d"),now.wYear);
        fprintf(file_log, heures);
        fprintf(file_log, "/");
        sprintf(heures,TEXT("%d"),now.wMonth);
        if(strlen(heures)==1)
            fprintf(file_log, "0");
        fprintf(file_log, heures);
        fprintf(file_log, "/");
        sprintf(heures,TEXT("%d"),now.wDay);
        if(strlen(heures)==1)
            fprintf(file_log, "0");
        fprintf(file_log, heures);
        fprintf(file_log, " ");
       
        sprintf(heures,TEXT("%d"),now.wHour);
        if(strlen(heures)==1)
            fprintf(file_log, "0");
        fprintf(file_log, heures);
        fprintf(file_log, ":");
        sprintf(heures,TEXT("%d"),now.wMinute);
        if(strlen(heures)==1)
            fprintf(file_log, "0");
        fprintf(file_log, heures);
        fprintf(file_log, ":");
        sprintf(heures,TEXT("%d"),now.wSecond);
        if(strlen(heures)==1)
            fprintf(file_log, "0");
        fprintf(file_log, heures);
        fprintf(file_log, " ");           
        sprintf(heures,TEXT("%d"),evenement);
        fprintf(file_log, heures);
        fprintf(file_log, " ");
        if(strcmp(sens, "E")==0)
            fprintf(file_log, "E ");
            else
            fprintf(file_log, "S ");
       
        fprintf(file_log, chain);
        fprintf(file_log," ");
       
        MEMORYSTATUS ms;
        GlobalMemoryStatus(&ms);
        int memoire = ms.dwAvailPhys/1024 ;
        sprintf(heures,TEXT("%d"),memoire);   

        fprintf(file_log, heures);
       
        fprintf(file_log,"\n");
       
    //    fclose(file_log); le fichier je le close a la fin du WinMain
   
   
 
        evenement++;
}


Si une personne pouvais m'en dire plus !!
Dites moi si je ne suis pas assez clair ...

Re : fichier de log le 18/07/2008 14:47:02

jfrancois
Bonjour,

Déjà ça au premier coup d'oeil :

void ConstruireURL(char* composant)
{
    LogPerf("ConstruireURL","E");
    if (temp != NULL)
    {
        // ici le tampon "temp" existe
        // et peut contenir n'importe quoi
        // au bout duquel (au 1er zéro binaire rencontré)
        // on concatène "composant"
        URL = strcat(temp,composant); // si tampon existe deja
    }
    else
    {
        // ici le tampon "temp" n'est pas vide
        // mais inexistant (adresse = NULL)
        // donc strcpy() va planter !
        URL = strcpy(temp,composant); // si tampon est vide
    }
    LogPerf("ConstruireURL","S");
}


Jean-François


Re : fichier de log le 18/07/2008 14:53:41

unlimited72
mais alors pourquoi ça fonctionne lorsque je n'appelle pas le fichier log.

Et donc que dois je faire le strcpy.




Re : fichier de log le 18/07/2008 15:03:53

jfrancois
temp et URL sont déclarés comment ?
Que voulez-vous dire par "je n'appelle pas le fichier log" ? les appels LogPerf() existent !

Jean-François


Re : fichier de log le 18/07/2008 15:08:22

unlimited72
char* URL=NULL;
char* temp[2000];

LogPerf() est bien appelés dans le code que j'ai fournis, c'est justement mon gros problème si je mes en commentaire l'appel à l'entrée de la méthode tout se passe bien je n'ai pas d'erreurs de compilation et l'application se connecte correctement, en revanche et dans le cas ou je l'appel en début de cette méthode seulement la j'ai mon application qui à n problème à la connection..

Re : fichier de log le 18/07/2008 15:11:18

jfrancois
char temp[2000]; suffit !
temp est un tableau de 2000 caractères
et non un tableau de 2000 pointeurs de caractère(s).

Jean-François


Re : fichier de log le 18/07/2008 15:14:32

unlimited72
Oui effectivement !!

Merci.

Mais j'ai toujours mon problème de connexion.

Re : fichier de log le 18/07/2008 15:16:39

jfrancois
Et "URL" est bien un pointeur sur la chaîne retournée par strcpy() (qui sera systématiquement exécutée puisque "temp" existe et est donc toujours non NULL) c'est à dire que "URL" pointe "temp" qui contient la chaîne issue de "composant".

Jean-François


Re : fichier de log le 18/07/2008 15:23:34

jfrancois

Et en essayant cette version plus concise de LogPerf() :

void LogPerf(char* chain, char* sens)
{
   // Fichier ouvert au début du WinMain
   // Fichier fermé à la fin du WinMain

   SYSTEMTIME now;
   TCHAR Texte[40];
   GetLocalTime(&now);
   sprintf(Texte,TEXT("%04d/%02d/%02d %02d:%02d:%02d %d %s ")
                ,now.wYear,now.wMonth,now.wDay
                ,now.wHour,now.wMinute,now.wSecond
                ,evenement++
                ,sens);
   fprintf(file_log,Texte);

   fprintf(file_log,chain);
       
   MEMORYSTATUS ms;
   GlobalMemoryStatus(&ms);
   int Memoire = ms.dwAvailPhys / 1024;
   sprintf(Texte,TEXT(" %d\n"),Memoire);
   fprintf(file_log,Texte);

}

Jean-François


Re : fichier de log le 18/07/2008 15:26:35

jfrancois
Quand LogPerf() est activé et qu'il y a plantage, la trace dans le fichier log est cohérente ?

Jean-François



[Page 1 Page 2 Page 3]
Classé sous : file, log, now, heures, fprintf

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
extraction dinformatio...
Budget : 300€
campagne Adwords
Budget : 5 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS