Instantiates a Trace log for detailed tracking of an application's internal activities.
//-----------------------------------------------------------------------
// <copyright file="Utility.cs" company="ParanoidMike">
// Copyright (c) ParanoidMike. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
namespace ParanoidMike
{
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using Microsoft.Win32;
/// <summary>
/// Reusable functions for many uses.
/// </summary>
public static class Utility
{
/// <summary>
/// Instantiates a Trace log for detailed tracking of an application's internal activities.
/// </summary>
/// <param name="appLoggingFolder">
/// Name of folder to create in the current user's %LOCALAPPDATA% profile location.
/// </param>
/// <param name="traceLogFileName">
/// Name of file to create in the appLoggingFolder location.
/// </param>
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);
}
}
}
Related examples in the same category