Added autoinstall for modules

This commit is contained in:
2024-07-14 21:24:49 +03:00
parent 3f8590b8f3
commit 13900bb3f3
10 changed files with 153 additions and 40 deletions

View File

@@ -8,14 +8,13 @@ public sealed class Logger : ILogger
private readonly FileStream _LogFileStream;
public List<string> LogMessageProperties = typeof(ILogMessage).GetProperties().Select(p => p.Name).ToList();
private Action<string>? _OutFunction;
public string LogMessageFormat { get ; set; }
public event EventHandler<ILogger.FormattedMessage> OnFormattedLog;
public event EventHandler<ILogMessage> OnRawLog;
public Logger(string logFolder, string logMessageFormat)
public Logger(string logFolder, string logMessageFormat, Action<string>? outFunction = null)
{
this.LogMessageFormat = logMessageFormat;
this._OutFunction = outFunction;
var logFile = logFolder + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
_LogFileStream = File.Open(logFile, FileMode.Append, FileAccess.Write, FileShare.Read);
}
@@ -34,6 +33,23 @@ public sealed class Logger : ILogger
messageAsString = messageAsString.Replace("{" + prop + "}", messageType?.GetProperty(prop)?.GetValue(message)?.ToString());
}
switch (message.LogMessageType)
{
case LogType.INFO:
messageAsString = $"[green]{messageAsString} [/]";
break;
case LogType.WARNING:
messageAsString = $"[yellow]{messageAsString} [/]";
break;
case LogType.ERROR:
messageAsString = $"[red]{messageAsString} [/]";
break;
case LogType.CRITICAL:
messageAsString = $"[red] [bold]{messageAsString} [/][/]";
break;
}
return messageAsString;
}
@@ -57,22 +73,37 @@ public sealed class Logger : ILogger
messageAsString = messageAsString.Replace("{" + prop + "}", messageType?.GetProperty(prop)?.GetValue(message)?.ToString());
}
switch (message.LogMessageType)
{
case LogType.INFO:
messageAsString = $"[green]{messageAsString} [/]";
break;
case LogType.WARNING:
messageAsString = $"[yellow]{messageAsString} [/]";
break;
case LogType.ERROR:
messageAsString = $"[red]{messageAsString} [/]";
break;
case LogType.CRITICAL:
messageAsString = $"[red][bold]{messageAsString} [/][/]";
break;
}
return messageAsString;
}
public void Log(ILogMessage message, string format)
{
OnRawLog?.Invoke(this, message);
string messageAsString = GenerateLogMessage(message, format);
OnFormattedLog?.Invoke(this, new ILogger.FormattedMessage() { Message = messageAsString, Type = message.LogMessageType });
_OutFunction?.Invoke(messageAsString);
LogToFile(messageAsString);
}
public void Log(ILogMessage message)
{
OnRawLog?.Invoke(this, message);
string messageAsString = GenerateLogMessage(message);
OnFormattedLog?.Invoke(this, new ILogger.FormattedMessage() { Message = messageAsString, Type = message.LogMessageType }) ;
_OutFunction?.Invoke(messageAsString);
LogToFile(messageAsString);
}
@@ -83,4 +114,9 @@ public sealed class Logger : ILogger
public void Log(string message, object Sender) => Log(new LogMessage(message, Sender));
public void Log(string message, object Sender, LogType type) => Log(new LogMessage(message, Sender, type));
public void LogException(Exception exception, object Sender, bool logFullStack = false) => Log(LogMessage.CreateFromException(exception, Sender, logFullStack));
public void SetOutFunction(Action<string> outFunction)
{
this._OutFunction = outFunction;
}
}