Development Class C#

//-----------------------------------------------------------------------
// 
//     Copyright (c) ParanoidMike. All rights reserved.
// 
//-----------------------------------------------------------------------
namespace ParanoidMike
{
    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    using Microsoft.Win32;
    /// 
    /// Reusable functions for many uses.
    /// 

    public static class Utility
    {
        /// 
        /// Instantiates a Trace log for detailed tracking of an application's internal activities.
        /// 

        /// 
        /// Name of folder to create in the current user's %LOCALAPPDATA% profile location.
        /// 
        /// 
        /// Name of file to create in the appLoggingFolder location.
        /// 
        public static void AddTraceLog(
            string appLoggingFolder,
            string traceLogFileName)
        {
            // Setup Trace log
            TextWriterTraceListener traceLog;
            string traceLogBaseFolder;
            traceLogBaseFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            Directory.CreateDirectory(Path.Combine(traceLogBaseFolder, appLoggingFolder));
            // concatenate the full path
            string fullPath = traceLogBaseFolder + "\\" + appLoggingFolder;
            try
            {
                Stream traceLogFile = File.Open(Path.Combine(fullPath, traceLogFileName), FileMode.Create, FileAccess.Write);
                // Create a new text writer using the output stream, and add it to the trace listeners.
                traceLog = new TextWriterTraceListener(traceLogFile);
                ((StreamWriter)(traceLog.Writer)).AutoFlush = true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message, Environment.NewLine);
                Console.WriteLine(e.StackTrace, Environment.NewLine);
                throw;
            }
            Trace.AutoFlush = true;
            Trace.Listeners.Clear();
            Trace.Listeners.Add(traceLog);
        }
    }
}