Mega Code Archive

 
Categories / C# / Development Class
 

Log Utility

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Diagnostics; using System.Reflection; namespace MCServerHelper {     internal static class LogUtility     {         private static readonly object syncObject = new object();         private static string logPath = string.Empty;         private static void CreateLogFile()         {             // not thread safe, just for test             if (string.IsNullOrEmpty(logPath))             {                 // Create a log file                 DirectoryInfo pathInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + Path.DirectorySeparatorChar + "MCServerHelper");                 if (!pathInfo.Exists)                 {                     pathInfo.Create();                 }                 FileInfo logFile = new FileInfo(pathInfo.FullName + Path.DirectorySeparatorChar + "logfile.txt");                 if (!logFile.Exists)                 {                     logFile.Create();                 }                 logPath = logFile.FullName;             }         }         public static void LogException(Exception ex)         {             CreateLogFile();             if (!string.IsNullOrEmpty(logPath))             {                 using (StreamWriter writer = new StreamWriter(logPath, true))                 {                     writer.WriteLine(DateTime.Now.ToString());                     writer.WriteLine(ex.Message);                     writer.WriteLine(ex.Source);                     writer.WriteLine(ex.TargetSite);                     writer.WriteLine(ex.StackTrace);                     StackTrace trace = new StackTrace(ex);                     if (trace.FrameCount > 0)                     {                         StackFrame frame = trace.GetFrame(0);                         if (frame != null)                         {                             MethodBase method = frame.GetMethod();                             writer.WriteLine(string.Format("{0}, Line {1}", method.Name, frame.GetFileLineNumber()));                         }                     }                     writer.WriteLine();                 }                 if (ex.InnerException != null)                 {                     LogException(ex.InnerException);                 }             }         }         public static void LogMessage(string message)         {             CreateLogFile();             if (!string.IsNullOrEmpty(logPath))             {                 using (FileStream stream = new FileStream(logPath, FileMode.Append, FileAccess.Write))                 {                     using (StreamWriter writer = new StreamWriter(stream, Encoding.UTF8))                     {                         writer.WriteLine(DateTime.Now.ToString());                         writer.WriteLine(message);                         writer.WriteLine("");                     }                 }             }         }     } }