Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classe pour gérer un fichier de log

avec des méthodes statiques

Sujet résolu
    22 mai 2012 à 9:41:57

    Bonjour à tous,

    Dans le cadre d'une application graphique, je cherche un moyen simple de journaliser toutes les actions réalisées. Je cherche donc à créer une classe (FichierLog) qui gérerait un fichier de log dont les messages auraient la structure suivante : <date dans un format précis> <message>. J'avais pensé à une classe qui contiendrait des membres statics donc on aurait pas besoin d'instancier un objet de cette classe mais simplement à appeler la méthode statique log(String msg); pour sauver un message.

    Seulement, venant du C++ et du C# je ne parvient pas à réaliser cette "bête" classe :/ est ce que quelqu'un pourrait m'aider svp ?
    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2012 à 9:59:49

      Je dois créer quelque chose de personnel :(
      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2012 à 10:09:27

        Nous faire pratiquer ... je sais que c'est complètement débile mais c'est ce qui nous est demandé :/
        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2012 à 10:15:01

          OK, l'exercice c'est "faire une classe de log", je pensais que tu voulais juste utiliser un log.

          Du coup montres-nous ce que tu as fait et où tu bloque.
          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2012 à 10:21:19

            voilà ce que je viens de réussi à faire à l'instant ... seulement je ne sais pas si c'est une bonne pratique de faire comme ceci :

            package Data;
            
            import java.io.IOException;
            import java.util.logging.FileHandler;
            import java.util.logging.Level;
            import java.util.logging.Logger;
            import java.util.logging.SimpleFormatter;
            
            public class FichierLog2
            {
                protected final static Logger logger = Logger.getLogger("test"); // Attribut faisant référence au journal
                protected static FileHandler fh = null;
                
                static
                {
                    init();
                }
                
                public static void init() // throws IOException
                {
                    try // throws IOException
                    {
                        fh = new FileHandler("trace.log", true);
                        
                        fh.setFormatter(new SimpleFormatter());
                        logger.setLevel(Level.ALL); // Sauve tout type de message, peu importe le niveau
                        logger.addHandler(fh);
                    }
                    catch (IOException | SecurityException ex)
                    {
                        Logger.getLogger(FichierLog2.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
                
                public static void writeLog(String msg)
                {
                    logger.log(Level.INFO, msg);
                    //logger.info(msg);
                }
            }
            


            Le problème que j'ai aussi avec ce code est que en plus d'avoir les message dans un fichier de log, les messages apparaissent aussi dans la console :/ ce que je ne souhaite pas


            EDIT : en fait ce que j'aurais voulu c'est de ne devoir rien instancier et juste appeler une méthode statique pour pouvoir journaliser un évènement
            • Partager sur Facebook
            • Partager sur Twitter
              22 mai 2012 à 12:25:00

              Pourquoi ne pas faire juste comme ceci: (Pas testé et fait en 30 secondes :D )
              public class LogFile{
              	private final static String logFile="tonFichier";
              	public static void write(String msg){
              		FileWriter fileWriter fw=new FileWriter(logFile,true); 
              		Date currentDate = new Date();
              		DateFormat dateFormat = new SimpleDateFormat("hh'h'mm'min's dd-MM-yy");
              		fileWriter.write("< "+dateFormat.format(currentDate)+" > "+msg);
              		fileWriter.flush();
              		fileWriter.close();
              	}
              }
              


              Sa devrai écrire quelque chose dans ce genre

              Citation


              < 12h29min52 22-05-2012 > ton message

              • Partager sur Facebook
              • Partager sur Twitter
              Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
                22 mai 2012 à 13:09:48

                Vérifie qu'elle fonctionne bien tout de même, je l'ai pas testé :D
                • Partager sur Facebook
                • Partager sur Twitter
                Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
                  22 mai 2012 à 13:31:13

                  je l'ai adapté à mes besoins et cela fonctionne comme souhaité :D Un tout grand merci !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 mai 2012 à 14:56:27

                    Nickel ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...

                    Classe pour gérer un fichier de log

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown