Added Logger Async option

This commit is contained in:
Jaex 2015-10-10 00:12:10 +03:00
parent 93ddecf037
commit 204d4a841d
2 changed files with 42 additions and 26 deletions

View file

@ -36,12 +36,18 @@ public class Logger
public event MessageAddedEventHandler MessageAdded;
public bool Async { get; set; }
public string LogFilePath { get; private set; }
private readonly object loggerLock = new object();
private StringBuilder sbMessages = new StringBuilder(4096);
public Logger(string logFilePath)
public Logger()
{
Async = true;
}
public Logger(string logFilePath) : this()
{
LogFilePath = logFilePath;
Helpers.CreateDirectoryIfNotExist(LogFilePath);
@ -59,34 +65,43 @@ public void WriteLine(string message = "")
{
if (!string.IsNullOrEmpty(message))
{
TaskEx.Run(() =>
if (Async)
{
lock (loggerLock)
TaskEx.Run(() => WriteLineInternal(message));
}
else
{
WriteLineInternal(message);
}
}
}
private void WriteLineInternal(string message)
{
lock (loggerLock)
{
message = string.Format("{0:yyyy-MM-dd HH:mm:ss.fff} - {1}", DateTime.Now, message);
Debug.WriteLine(message);
if (sbMessages != null)
{
sbMessages.AppendLine(message);
}
try
{
if (!string.IsNullOrEmpty(LogFilePath))
{
message = string.Format("{0:yyyy-MM-dd HH:mm:ss.fff} - {1}", DateTime.Now, message);
Debug.WriteLine(message);
if (sbMessages != null)
{
sbMessages.AppendLine(message);
}
try
{
if (!string.IsNullOrEmpty(LogFilePath))
{
File.AppendAllText(LogFilePath, message, Encoding.UTF8);
}
}
catch (Exception e)
{
Debug.WriteLine(e);
}
OnMessageAdded(message);
File.AppendAllText(LogFilePath, message, Encoding.UTF8);
}
});
}
catch (Exception e)
{
Debug.WriteLine(e);
}
OnMessageAdded(message);
}
}

View file

@ -348,6 +348,7 @@ private static void Run()
SaveSettings();
BackupSettings();
DebugHelper.Logger.Async = false;
DebugHelper.WriteLine("ShareX closing");
}