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

Je voudrais implémenter la journalisation dans mon application, mais préférerais ne pas utiliser de frameworks externes comme log4net.

Donc, je voudrais faire quelque chose comme l’ écho de DOS à un fichier. Quel est le moyen le plus efficace de le faire?

Existe-t-il un moyen de consigner les exceptions non sockets en charge consignées sans utiliser un cadre externe?

public void Logger(Ssortingng lines) { // Write the ssortingng 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 :

Vous pouvez utiliser le System.Diagnostics.TraceSource intégré.
Voici une liste des écouteurs de trace intégrés + FileLogTraceListener .

Il existe de nombreux manuels sur le Web comme celui-ci , ou celui de Jeff Atwood +.

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.

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."); } } 

Si vous cherchez un moyen très simple de vous connecter, vous pouvez utiliser cette seule ligne. Si le fichier n’existe pas, il est créé.

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

J’avais l’habitude d’écrire mes propres erreurs jusqu’à ce que je découvre ELMAH . Je n’ai jamais été en mesure d’obtenir la partie emailing aussi parfaitement que ELMAH.

Si vous souhaitez restr à proximité de .NET, cochez la case Application Library Logging Application Block . Regardez ici Ou pour un tutoriel de démarrage rapide, vérifiez ceci . J’ai utilisé le bloc d’application Validation de la bibliothèque d’entreprise et cela correspond vraiment à mes besoins et il est très facile d’hériter (l’installer et le réfriger!) Dans votre projet.

J’utilise le NLOG . C’est génial.

Si vous souhaitez créer votre propre journal d’erreur, 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) { ssortingng 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(Ssortingng.Format("{0} ({1}) - Method: {2}", DateTime.Now.ToShortDateSsortingng(), DateTime.Now.ToShortTimeSsortingng(), method.ToSsortingng())); sw.WriteLine(exception.ToSsortingng()); sw.WriteLine(""); } } catch (IOException) { if (!File.Exists(location + @"log.txt")) { File.Create(location + @"log.txt"); } } } 

Ensuite, pour écrire dans le journal des erreurs, il suffit d’écrire ( q étant l’exception prise)

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

Je suggère “Postsharp “. Il fournit un cadre très élégant pour implémenter la journalisation sans modifier aucune logique métier.