Aufgabenstellung:
Ihr wollt aus einem (Windows-)Programm heraus Texte in eine Datei protokollieren, z.B. zum Zweck der Fehlersuche.
Mögliche Lösung:
Wenn Ihr mal nicht extra ein Logging-Framework à la NLog oder log4net installieren möchtet, sondern einfach nur eine kurze Möglichkeit braucht, Text in eine Logdatei zu schreiben, dann ist das hier meine Wahl:
namespace Helper
{
using System;
using System.IO;
using System.Reflection;
/// <summary>
/// The shortest possible logger.
/// </summary>
public static class QuickLogger
{
private static readonly Lazy<string> LogFilePath = new Lazy<string>(() =>
{
var folderPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var fileName = Path.ChangeExtension(Path.GetFileName(Assembly.GetEntryAssembly().Location), @".log");
return Path.Combine(folderPath, fileName);
});
public static void Log(string text, params object[] args)
{
if (!string.IsNullOrEmpty(text))
{
var msg = string.Format(@"[{0}, {1}\{2}] {3}" + Environment.NewLine,
DateTime.Now,
Environment.UserDomainName,
Environment.UserName,
string.Format(text, args));
File.AppendAllText(LogFilePath.Value, msg);
}
}
}
}
(Original)
Beschreibung:
Die Klasse erstellt eine Protokollierungs-Datei direkt im Ordner der Programmdatei mit dem Namen des aktuell laufenden Programms.
Das Ganze eignet sich also primär zu Testzwecken, oder wenn das Programm nicht im Windows-Programme-Ordner liegt, da normale Benutzer keine Schreibrechte im Programme-Ordner haben.