Development Class C#

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