web-dev-qa-db-fra.com

Comment puis-je me connecter en C # sans utiliser de bibliothèques tierces?

J'aimerais implémenter la journalisation dans mon application, mais préférerais ne pas utiliser de frameworks extérieurs comme log4net.

Donc, je voudrais faire quelque chose comme DOS echo dans un fichier. Quel est le moyen le plus efficace de le faire?

Existe-t-il un moyen de journaliser les exceptions non gérées sans utiliser de structure externe?

89
IAdapter
public void Logger(String lines)
{

 // Write the string to a file.append mode is enabled so that the log
 // lines get appended to  test.txt than wiping content and writing the log

  System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt",true);
  file.WriteLine(lines);

  file.Close();

}

Pour plus d'informations MSDN :

63
Brandon

Je préférerais ne pas utiliser de frameworks externes comme log4j.net.

Pourquoi? Log4net répondrait probablement à la plupart de vos besoins. Par exemple, vérifiez cette classe: RollingFileAppender .

Log4net est bien documenté et il existe des milliers de ressources et de cas d'utilisation sur le Web.

22
empi

Vous pouvez écrire directement dans un journal des événements. Vérifiez les liens suivants:
http://support.Microsoft.com/kb/307024
http://msdn.Microsoft.com/en-us/library/system.diagnostics.eventlog.aspx

Et voici l'exemple de MSDN:

using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
             //An event log source should not be created and immediately used.
             //There is a latency time to enable the source, it should be created
             //prior to executing the application that uses the source.
             //Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatedEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.");

    }
}
16
šljaker

Si vous cherchez un moyen vraiment simple de vous connecter, vous pouvez utiliser cette doublure. Si le fichier n'existe pas, il est créé.

System.IO.File.AppendAllText(@"c:\log.txt", "mymsg\n");
15
live-love

J'avais l'habitude d'écrire mon propre journal des erreurs jusqu'à ce que je découvre ELMAH . Je n'ai jamais réussi à obtenir la partie emailing aussi parfaitement qu'ELMAH.

7
jonezy

Si vous souhaitez rester à proximité de .NET , extrayez le bloc d’application de journalisation de la bibliothèque Enterprise . -). Regardez ici . Ou pour un tutoriel de démarrage rapide, vérifiez this . J'ai utilisé le bloc d'application Validation de la bibliothèque d'entreprise et cela répond vraiment à mes besoins et il est très facile de "hériter" (l'installer et le référencer!) Dans votre projet.

6
Bernoulli IT

Si vous voulez votre propre journal d'erreur personnalisé, vous pouvez facilement écrire votre propre code. Je vais vous donner un extrait de l'un de mes projets.

public void SaveLogFile(object method, Exception exception)
{
    string location = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\FolderName\";
    try
    {
        //Opens a new file stream which allows asynchronous reading and writing
        using (StreamWriter sw = new StreamWriter(new FileStream(location + @"log.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite)))
        {
            //Writes the method name with the exception and writes the exception underneath
            sw.WriteLine(String.Format("{0} ({1}) - Method: {2}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), method.ToString()));
            sw.WriteLine(exception.ToString()); sw.WriteLine("");
        }
    }
    catch (IOException)
    {
        if (!File.Exists(location + @"log.txt"))
        {
            File.Create(location + @"log.txt");
        }
    }
}

Ensuite, pour écrire dans le journal des erreurs, écrivez simplement (q étant l'exception interceptée)

SaveLogFile(MethodBase.GetCurrentMethod(), `q`);
4
MisdartedPenguin