Files
NightAlert/ThirdParty/EngineIoClientDotNet/Src/EngineIoClientDotNet.mono/Modules/LogManager.cs

109 lines
3.0 KiB
C#

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;
namespace Quobject.EngineIoClientDotNet.Modules
{
public class LogManager
{
private const string LogFilePath = "XunitTrace.log";
private static readonly LogManager EmptyLogger = new LogManager(null);
private static StreamWriter writer;
private readonly string type;
#region Statics
public static void SetupLogManager()
{}
public static LogManager GetLogger(string type)
{
return new LogManager(type);
}
public static LogManager GetLogger(Type type)
{
return GetLogger(type.ToString());
}
public static LogManager GetLogger(MethodBase methodBase)
{
#if DEBUG
string declaringType = methodBase.DeclaringType != null
? methodBase.DeclaringType.ToString()
: string.Empty;
string fullType = string.Format("{0}#{1}", declaringType, methodBase.Name);
return GetLogger(fullType);
#else
return EmptyLogger;
#endif
}
#endregion
public LogManager(string type)
{
this.type = type;
}
public static bool Enabled { get; set; }
private static StreamWriter Writer
{
get
{
if (writer == null)
{
FileStream fs = new FileStream(
LogFilePath, FileMode.Append, FileAccess.Write, FileShare.Read);
writer = new StreamWriter(fs, Encoding.UTF8)
{
AutoFlush = true
};
}
return writer;
}
}
[Conditional("DEBUG")]
public void Info(string msg)
{
if (!Enabled)
{
return;
}
Writer.WriteLine(
"{0:yyyy-MM-dd HH:mm:ss fff} [] {1} {2}",
DateTime.Now,
this.type,
Global.StripInvalidUnicodeCharacters(msg));
}
[Conditional("DEBUG")]
public void Error(string p, Exception exception)
{
//this.Info($"ERROR {p} {exception.Message} {exception.StackTrace}");
this.Info(String.Format("ERROR {0} {1} {2}", p, exception.Message, exception.StackTrace));
if (exception.InnerException != null)
{
//this.Info($"ERROR exception.InnerException {p} {exception.InnerException.Message} {exception.InnerException.StackTrace}");
this.Info(String.Format("ERROR {0} {1} {2} {3}", exception.InnerException, p,
exception.InnerException.Message, exception.InnerException.StackTrace));
}
}
[Conditional("DEBUG")]
internal void Error(Exception e)
{
this.Error("", e);
}
}
}