mirror of
https://git.battle-of-pip.de/root/vpr-mitarbeiterverwaltung.git
synced 2025-06-20 15:53:16 +02:00
95 lines
2.5 KiB
C#
95 lines
2.5 KiB
C#
namespace DX86.Modules;
|
|
/*
|
|
* Copyright 2024 SnapixLP
|
|
*/
|
|
public class MessageSender
|
|
{
|
|
private string[] messageHistory = {};
|
|
private bool saveOnly = false;
|
|
|
|
private string logfile;
|
|
|
|
public MessageSender(string logfile)
|
|
{
|
|
this.logfile = logfile;
|
|
if (!File.Exists(logfile))
|
|
{
|
|
File.Create(logfile).Close();
|
|
Log("[MessageSender] Log file created.");
|
|
}
|
|
Log("[MessageSender] Starting Logoutput to " + logfile);
|
|
Log("[MessageSender] MessageSender initialized.");
|
|
}
|
|
|
|
private async Task WriteToFileAsync(string message)
|
|
{
|
|
try
|
|
{
|
|
using (StreamWriter writer = new StreamWriter(logfile, true))
|
|
{
|
|
await writer.WriteLineAsync(message);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Error($"Failed to write to log file: {ex.Message}");
|
|
}
|
|
}
|
|
|
|
|
|
public async void Log(string message)
|
|
{
|
|
Console.ForegroundColor = ConsoleColor.Gray;
|
|
this.Send($"[{DateTime.Now}] [INFO ] {message}");
|
|
}
|
|
public async void Warn(string message)
|
|
{
|
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
this.Send($"[{DateTime.Now}] [WARN ] {message}");
|
|
Console.ForegroundColor = ConsoleColor.Gray;
|
|
}
|
|
public async void Error(string message)
|
|
{
|
|
Console.ForegroundColor = ConsoleColor.Red;
|
|
this.Send($"[{DateTime.Now}] [ERROR] {message}");
|
|
Console.ForegroundColor = ConsoleColor.Gray;
|
|
}
|
|
|
|
private async void Send(string message)
|
|
{
|
|
WriteToFileAsync(message);
|
|
if (!saveOnly)
|
|
{
|
|
Console.WriteLine(message);
|
|
}
|
|
|
|
messageHistory = messageHistory.Concat(new[] { message }).ToArray();
|
|
if (messageHistory.Length > 50)
|
|
{
|
|
messageHistory = messageHistory.Skip(1).ToArray();
|
|
}
|
|
}
|
|
|
|
public async void SendHistory()
|
|
{
|
|
|
|
int i = 0;
|
|
foreach (var s in messageHistory)
|
|
{
|
|
if (s.Contains("[INFO ]"))
|
|
Console.ForegroundColor = ConsoleColor.Gray;
|
|
if (s.Contains("[WARN ]"))
|
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
|
if (s.Contains("[ERROR]"))
|
|
Console.ForegroundColor = ConsoleColor.Red;
|
|
Console.WriteLine($"{s}");
|
|
Console.ForegroundColor = ConsoleColor.Gray;
|
|
}
|
|
}
|
|
|
|
public void SaveOnly(bool newValue)
|
|
{
|
|
saveOnly = newValue;
|
|
}
|
|
|
|
} |