private bool Log(Level level, string message)
{
CheckFile();
if (level.CompareTo(LogLevel) < 0)
{
return false;
}
try
{
// assemble message
var sb = new StringBuilder();
sb.Append(DateTime.Now.ToString("u"));
sb.Append(" ");
sb.Append(Enum.GetName(typeof(Level), level).ToUpper());
sb.Append(": ");
sb.Append(message);
message = sb.ToString();
lock (WriteLock)
{
// write to console
var oldColor = Console.ForegroundColor;
Console.ForegroundColor = GetColor(level);
Console.WriteLine(message);
Console.ForegroundColor = oldColor;
// write to diagnostics log
System.Diagnostics.Debug.WriteLine(message);
// write to log file
os.WriteLine(sb.ToString());
}
}
catch
{
return false;
}
return true;
}