Как мне зарегистрироваться на С#?
Я хотел бы реализовать ведение журнала в моем приложении, но предпочел бы не использовать какие-либо внешние фреймворки, такие как log4net.
Итак, я хотел бы сделать что-то вроде DOS echo в файл. Каков наиболее эффективный способ сделать это?
Есть ли способ регистрировать необработанные исключения, записанные без использования внешней структуры?
Ответы
Ответ 1
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();
}
Для получения дополнительной информации MSDN:
Ответ 2
Вы можете использовать встроенный System.Diagnostics.TraceSource.
Вот список встроенных трековых прослушивателей + FileLogTraceListener.
В Интернете есть много руководств или этот Jeff Atwood + улучшения.
Ответ 3
Я бы предпочел не использовать никаких внешних таких как log4j.net.
Почему? Log4net, вероятно, удовлетворит большинство ваших требований.
Например, проверьте этот класс: RollingFileAppender.
Log4net хорошо документирован, и в Интернете тысячи ресурсов и случаев использования.
Ответ 4
Вы можете написать непосредственно в журнал событий. Проверьте следующие ссылки:
http://support.microsoft.com/kb/307024
http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx
И вот образец из 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.");
}
}
Ответ 5
Если вы ищете реальный простой способ регистрации, вы можете использовать этот один вкладыш. Если файл не существует, он создается.
System.IO.File.AppendAllText(@"c:\log.txt", "mymsg\n");
Ответ 6
Раньше я писал свой собственный журнал ошибок, пока не обнаружил ELMAH. Мне никогда не удавалось получить часть электронной почты так же хорошо, как ELMAH.
Ответ 7
Если вы хотите остаться рядом с .NET, зайдите в Блок регистрации журналов Enterprise Library. Посмотрите здесь. Или для руководства по быстрому старту проверьте this. Я использовал блок приложения Validation из Enterprise Library, и он действительно соответствует моим потребностям и очень легко "наследовать" (установить его и переустановить) в вашем проекте.
Ответ 8
Если вы хотите создать собственный журнал регистрации ошибок, вы можете легко написать свой собственный код. Я дам вам фрагмент из одного из моих проектов.
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");
}
}
}
Затем, чтобы фактически записать в журнал ошибок, просто напишите (q
, являющееся пойманным исключением)
SaveLogFile(MethodBase.GetCurrentMethod(), `q`);
Ответ 9
Я использую NLOG. Это блестяще.
Ответ 10
Я бы предложил Postsharp". Это дает очень элегантную структуру для ведения журнала, не изменяя никакой бизнес-логики.
Ответ 11
Думаю, мы не должны изобретать колесо. По мере того, как далеко заходит журнал, у нас есть неплохие варианты на рынке.
Я также создал небольшую обертку над log4net, которая очень проста в использовании, и вам просто нужно установить ее в nuget, и все будет сделано со всей необходимой конфигурацией.
Вы можете найти его nuget в https://www.nuget.org/profiles/techy.rahulgarg.
Я также пишу небольшой блог, чтобы объяснить модуль, который вы можете получить в http://www.codingeek.com/dotnet/logger