IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Rediriger cerr vers un fichier


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut Rediriger cerr vers un fichier
    Bonsoir

    Ben ma question est simple, comme rediriger le flux cerr vers un fichier ??

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <iostream>
    #include <fstream>
     
    int main()
    {
        std::ofstream Out("Error.txt");
        std::cerr.rdbuf(Out.rdbuf());
     
        std::cerr << "Test";
     
        return 0;
    }
    Si tu ne veux pas le faire dans ton programme, tu peux aussi utiliser une redirection lorsque tu lances ton executable.

  3. #3
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    Citation Envoyé par Laurent Gomila
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <iostream>
    #include <fstream>
     
    int main()
    {
        std::ofstream Out("Error.txt");
        std::cerr.rdbuf(Out.rdbuf());
     
        std::cerr << "Test";
     
        return 0;
    }
    Si tu ne veux pas le faire dans ton programme, tu peux aussi utiliser une redirection lorsque tu lances ton executable.
    Si la fichier n'existe pas, est-ce que ça créer le fichier ?? Parce que dans mon programme opengl, j'ai fais un copier-coller de ton code, mais je ne vois pas de Error.txt dans le dossier de mon executable...

    Sinon, qu'est-ce que tu entends pas "redirection au lancement de mon executable" ?

    EDIT: En fait ça marche, mais j'aurais besoin de ça pour afficher les plantages... et ça ne fonctionne pas quand ça plante

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si la fichier n'existe pas, est-ce que ça créer le fichier ?? Parce que dans mon programme opengl, j'ai fais un copier-coller de ton code, mais je ne vois pas de Error.txt dans le dossier de mon executable...
    Oui, ça va créer le fichier. Vérifie le répertoire de travail, peut-être est-il différent du répertoire de ton exécutable.

    Sinon, qu'est-ce que tu entends pas "redirection au lancement de mon executable" ?
    Ca dépend du système, mais globalement c'est un truc de ce genre (en ligne de commande) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Programme.exe 2> out.txt
    Par contre, me rappelle plus si 2 est bien le numéro correspondant à cerr.

  5. #5
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    Le truc bizarre, c'est que quand ça plante dans le constructeur d'une classe (classe OGLFT, dans la fonction FT_Freetype_Version ou un truc du genre), ça n'écrit rien dans error.txt... :-/

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Essaye de placer un flush, avec std::flush ou std::endl;

  7. #7
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    En vrac...

    Ca ne plante pas par hasard dans un constructeur de variable globale appelé avant main?

    Essaye de faire
    pour contrôler le buffering.

    Il vaudrait mieux remettre le streambuf de cerr avant de sortir de main pour avoir les sorties éventuellement faites dans les destructeurs de variables globales.

  8. #8
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    En vrac...

    Ca ne plante pas par hasard dans un constructeur de variable globale appelé avant main?

    Essaye de faire
    pour contrôler le buffering.

    Il vaudrait mieux remettre le streambuf de cerr avant de sortir de main pour avoir les sorties éventuellement faites dans les destructeurs de variables globales.
    Ca plante dans le constructeur d'une classe pour afficher du texte sous Opengl à l'aider de Freetype 2. Ca plante sur la fonction FT_Library_Version.

    Sinon, comment remettre le streambuf de cerr ?

Discussions similaires

  1. rediriger cout vers un fichier
    Par black.out dans le forum SL & STL
    Réponses: 4
    Dernier message: 22/06/2006, 15h39
  2. Réponses: 15
    Dernier message: 14/06/2006, 12h30
  3. Rediriger la sortie d'un programme vers un fichier
    Par olive_le_malin dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/11/2005, 09h55
  4. Réponses: 3
    Dernier message: 21/10/2005, 14h49
  5. Rediriger cerr<< ver un MessageBox
    Par philippe V dans le forum C++
    Réponses: 3
    Dernier message: 22/12/2004, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo