SND\AstrorEnales_cp 5505f7dcbf - Added PlatformSystem Plugins layer
- Started Windows, Metro and Linux Platform-Plugins
- Moved the RecordingSample to the Samples folder
- Started two samples for using the graphics device in a WinForms and Wpf Editor
- Refactorings in the AddIn-System
- Moved the Window initialization-code to the Platform modules
- Changed the License text in all code files which is now way smaller
- Started ProjectConverter tool which converts all the projects and solution to the target configuration
- Changed the SupportedPlatform names in the Resource files
- Changed the WIN8 define to WINDOWSMETRO which is actually meant
- Removed NLog and started our own Logger class
- Many more stuff...
2012-08-09 09:45:04 +00:00

141 lines
3.0 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
namespace ANX.Framework.NonXNA
{
public static class Logger
{
#region Constants
private const string Filename = "log.txt";
#endregion
#region Private
#if !WINDOWSMETRO
private static FileStream outputStream;
private static StreamWriter writer;
#endif
private static string CurrentDateTimeStamp
{
get
{
DateTime stamp = DateTime.Now;
return stamp.Year + "-" + stamp.Month.ToString("00") + "-" +
stamp.Day.ToString("00") + " " + stamp.Hour.ToString("00") + ":" +
stamp.Minute.ToString("00") + ":" + stamp.Second.ToString("00");
}
}
private static string CurrentTimeStamp
{
get
{
DateTime stamp = DateTime.Now;
return stamp.Hour.ToString("00") + ":" + stamp.Minute.ToString("00") +
":" + stamp.Second.ToString("00");
}
}
#endregion
#region Public
public static bool IsWritingToConsole;
#endregion
#region Constructor
static Logger()
{
IsWritingToConsole = true;
#if !WINDOWSMETRO
outputStream = File.Open(Filename, FileMode.Create,
FileAccess.Write, FileShare.ReadWrite);
writer = new StreamWriter(outputStream);
writer.AutoFlush = true;
#endif
WriteToFile("OS: " + OSInformation.GetName() + " - " + OSInformation.GetVersion());
WriteToFile("StartTime: " + CurrentDateTimeStamp);
WriteToFile("----------");
}
#endregion
#region Info
public static void Info(string message)
{
string text = CurrentTimeStamp + "| " + message;
WriteToConsole(text);
WriteToFile(text);
}
public static void Info(string message, params object[] formatObjects)
{
Info(String.Format(message, formatObjects));
}
#endregion
#region Warning
public static void Warning(string message)
{
string text = CurrentTimeStamp + "| Warning: " + message + BuildStackTrace();
WriteToConsole(text);
WriteToFile(text);
}
#endregion
#region Error
public static void Error(string message)
{
string text = CurrentTimeStamp + "| Error: " + message + BuildStackTrace();
WriteToConsole(text);
WriteToFile(text);
}
#endregion
#region BuildStackTrace
private static string BuildStackTrace()
{
string result = "";
#if !WINDOWSMETRO
string[] lines = new StackTrace(true).ToString().Split('\n');
for (int index = 2; index < lines.Length; index++)
{
result += "\n" + lines[index].ToString();
}
#endif
return result;
}
#endregion
#region WriteToConsole
private static void WriteToConsole(string message)
{
if (IsWritingToConsole == false)
{
return;
}
if (Debugger.IsAttached)
{
Debug.WriteLine(message);
}
else
{
#if !WINDOWSMETRO
Console.WriteLine(message);
#endif
}
}
#endregion
#region WriteToFile
private static void WriteToFile(string message)
{
#if !WINDOWSMETRO
writer.WriteLine(message);
#endif
}
#endregion
}
}