Partage
  • Partager sur Facebook
  • Partager sur Twitter

Système de logs

    4 mars 2012 à 20:56:05

    Salut,
    Je code un système de logs sur mon émulateur et voici mon code:

    public static void InitLogs(string name, string folder)
            {
                if (!Directory.Exists("Scripts/logs"))
                {
                    Directory.CreateDirectory("Scripts/logs");
                }
                if (!Directory.Exists("Scripts/logs/" + folder))
                {
                    Directory.CreateDirectory("Scripts/logs/" + folder);
                }
                StreamWriter writer;
                writer = new StreamWriter("Scripts/logs/" + name + "_" + DateTime.Now.ToString().Replace("/", "~").Replace(":", "-") + ".txt");
                writer.AutoFlush = true;
                writer.Flush();
                Write("Starting logs ! ~~ Trololol by Predator");
            }
            public static void Write(string message)
            {
                writer.WriteLine("At " + DateTime.Now.ToString().Replace("/", "~").Replace(":", "-") + " : " + message);
            }
    

    Et le problème est le suivant:
    Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'Ankemu.Utils.Logs.writer'

    Et étant débutant en C#, et bah je demande de l'aide ^^ J'ai compris l'erreur mais je ne sais pas comment la réglé.
    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      4 mars 2012 à 23:14:21

      Dans ton code :
      public static void InitLogs(string name, string folder)
              {
                  ///...
                  StreamWriter writer;
                  writer = new StreamWriter("Scripts/logs/" + name + "_" + DateTime.Now.ToString().Replace("/", "~").Replace(":", "-") + ".txt");
                  //...
              }
              public static void Write(string message)
              {
                  writer.WriteLine("At " + DateTime.Now.ToString().Replace("/", "~").Replace(":", "-") + " : " + message);
              }
      

      La variable writer que tu initialises dans la méthode InitLogs() n'est pas la même que celle que tu utilises dans la méthode Write(), car la ligne 4 (StreamWriter writer;) a pour effet de déclarer une nouvelle variable locale writer qui "cache" la variable membre writer. En gros cette ligne est en trop.

      A propos, l'appel à la méthode Flush() du StreamWriter est inutile juste après son ouverture, puisqu'il n'y a rien à flusher.
      • Partager sur Facebook
      • Partager sur Twitter
        5 mars 2012 à 14:01:54

        Je sais que je ne répond pas à la question initiale... Mais pour ta culture .NET, j'pense que ça peut être intéressant de savoir que pour le log, il y a Debug et/ou Trace qui sont déjà en place. Trace est particulièrement intéressant dans le cas d'une application compilée en mode release s'il faut enregistrer les messages dans les journaux Windows (EventLogTraceListener) ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Système de logs

        × 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