Como eu faço o login em C # sem usar bibliotecas de terceiros?

Eu gostaria de implementar o log em meu aplicativo, mas preferiria não usar estruturas externas como log4net.

Então eu gostaria de fazer algo como o eco do DOS em um arquivo. Qual é a maneira mais eficaz de fazer isso?

Existe uma maneira de registrar exceções não tratadas registradas sem usar uma estrutura externa?

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(); } 

Para mais informações MSDN :

Você pode usar o System.Diagnostics.TraceSource interno .
Aqui está uma lista dos listeners de rastreio integrados + FileLogTraceListener .

Existem muitos manuais na Web como este , ou este por Jeff Atwood + melhorias .

Eu prefiro não usar qualquer estrutura externa como log4j.net.

Por quê? O Log4net provavelmente atenderia a maioria dos seus requisitos. Por exemplo, verifique esta class: RollingFileAppender .

O Log4net está bem documentado e existem milhares de resources e casos de uso na web.

Você pode gravar diretamente em um log de events. Verifique os seguintes links:
http://support.microsoft.com/kb/307024
http://msdn.microsoft.com/pt-br/library/system.diagnostics.eventlog.aspx

E aqui está o exemplo do 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."); } } 

Se você está procurando uma maneira realmente simples de registrar, você pode usar este forro. Se o arquivo não existir, ele será criado.

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

Eu costumava escrever meu próprio log de erros até descobrir o ELMAH . Eu nunca consegui obter a parte do emailing tão perfeitamente quanto o ELMAH.

Se você quiser ficar próximo do .NET, confira o Bloco de aplicativos de registro da biblioteca corporativa . Olha aqui Ou para um tutorial de início rápido, verifique isso . Eu usei o bloco de aplicação de validação da biblioteca da empresa e realmente atende às minhas necessidades e é muito fácil de “herdar” (instalá-lo e refrence-lo!) Em seu projeto.

Eu estou usando o NLOG . É shiny.

Se você quiser seu próprio Error Logging, você pode facilmente escrever seu próprio código. Vou te dar um trecho de um dos meus projetos.

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

Então, para realmente gravar no log de erros, apenas escreva ( q sendo a exceção capturada)

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

Eu sugeriria “Postsharp “. Ele fornece uma estrutura muito elegante para implementar o log sem modificar qualquer lógica de negócios.