49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using RobotNet10.ScriptEngine.HubContexts;
|
|
|
|
namespace RobotNet10.ScriptEngine.Models;
|
|
|
|
public class LoggerMission(Guid id, ConsoleHubContext hubContext) : RobotNet10.Script.ILogger
|
|
{
|
|
private string log = "";
|
|
private readonly Mutex mutexLog = new();
|
|
|
|
public string GetLog()
|
|
{
|
|
mutexLog.WaitOne();
|
|
var result = log;
|
|
log = ""; // Clear log after reading
|
|
mutexLog.ReleaseMutex();
|
|
return result;
|
|
}
|
|
|
|
public void LogError(string message)
|
|
{
|
|
hubContext.LogErrorToMission(id, message);
|
|
|
|
mutexLog.WaitOne();
|
|
// Format: [LEVEL] YYYY-MM-DDTHH:mm:ss.fffZ | message
|
|
log += $"[ERROR] {DateTime.UtcNow:yyyy-MM-ddTHH:mm:ss.fffZ} | {message}{Environment.NewLine}";
|
|
mutexLog.ReleaseMutex();
|
|
}
|
|
|
|
public void LogInfo(string message)
|
|
{
|
|
hubContext.LogInfoToMission(id, message);
|
|
|
|
mutexLog.WaitOne();
|
|
// Format: [LEVEL] YYYY-MM-DDTHH:mm:ss.fffZ | message
|
|
log += $"[INFO] {DateTime.UtcNow:yyyy-MM-ddTHH:mm:ss.fffZ} | {message}{Environment.NewLine}";
|
|
mutexLog.ReleaseMutex();
|
|
}
|
|
|
|
public void LogWarning(string message)
|
|
{
|
|
hubContext.LogWarningToMission(id, message);
|
|
|
|
mutexLog.WaitOne();
|
|
// Format: [LEVEL] YYYY-MM-DDTHH:mm:ss.fffZ | message
|
|
log += $"[WARN] {DateTime.UtcNow:yyyy-MM-ddTHH:mm:ss.fffZ} | {message}{Environment.NewLine}";
|
|
mutexLog.ReleaseMutex();
|
|
}
|
|
}
|