changed framework to dotnet6
This commit is contained in:
34
Loggers/AsyncLogger.cs
Normal file
34
Loggers/AsyncLogger.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
namespace DTLib.Loggers;
|
||||
|
||||
// вывод лога в консоль и файл
|
||||
public class AsyncLogger : BaseLogger
|
||||
{
|
||||
public AsyncLogger(string logfile) : base(logfile) { }
|
||||
|
||||
public AsyncLogger(string dir, string programName) : base(dir, programName) { }
|
||||
|
||||
readonly object consolelocker = new();
|
||||
public override void Log(params string[] msg)
|
||||
{
|
||||
lock (statelocker) if (!IsEnabled) return;
|
||||
// добавление даты
|
||||
if (msg.Length == 1) msg[0] = "[" + DateTime.Now.ToString() + "]: " + msg[0];
|
||||
else msg[1] = "[" + DateTime.Now.ToString() + "]: " + msg[1];
|
||||
// перенос строки
|
||||
msg[msg.Length - 1] += '\n';
|
||||
// вывод в консоль
|
||||
lock (consolelocker)
|
||||
ColoredConsole.Write(msg);
|
||||
// вывод в файл
|
||||
if (msg.Length == 1)
|
||||
lock (Logfile) File.AppendAllText(Logfile, msg[0]);
|
||||
else
|
||||
{
|
||||
StringBuilder strB = new();
|
||||
for (ushort i = 0; i < msg.Length; i++)
|
||||
strB.Append(msg[++i]);
|
||||
lock (Logfile) File.AppendAllText(Logfile, strB.ToString());
|
||||
}
|
||||
}
|
||||
public void LogAsync(params string[] msg) => Task.Run(() => Log(msg));
|
||||
}
|
||||
16
Loggers/BaseLogger.cs
Normal file
16
Loggers/BaseLogger.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
namespace DTLib.Loggers;
|
||||
|
||||
public abstract class BaseLogger
|
||||
{
|
||||
public string Logfile { get; init; }
|
||||
public BaseLogger(string logfile) => Logfile = logfile;
|
||||
public BaseLogger(string dir, string programName) => Logfile = $"{dir}\\{programName}_{DateTime.Now}.log".Replace(':', '-').Replace(' ', '_');
|
||||
|
||||
|
||||
public bool IsEnabled { get; private set; } = false;
|
||||
readonly protected object statelocker = new();
|
||||
public void Disable() { lock (statelocker) IsEnabled = false; }
|
||||
public void Enable() { lock (statelocker) IsEnabled = true; }
|
||||
|
||||
public abstract void Log(params string[] msg);
|
||||
}
|
||||
32
Loggers/DefaultLogger.cs
Normal file
32
Loggers/DefaultLogger.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
namespace DTLib.Loggers;
|
||||
|
||||
// вывод лога в консоль и файл
|
||||
public class DefaultLogger : BaseLogger
|
||||
{
|
||||
public DefaultLogger(string logfile) : base(logfile) { }
|
||||
|
||||
public DefaultLogger(string dir, string programName) : base(dir, programName) { }
|
||||
|
||||
public override void Log(params string[] msg)
|
||||
{
|
||||
lock (Logfile) if (!IsEnabled) return;
|
||||
if (msg.Length == 1) msg[0] = "[" + DateTime.Now.ToString() + "]: " + msg[0];
|
||||
else msg[1] = "[" + DateTime.Now.ToString() + "]: " + msg[1];
|
||||
LogNoTime(msg);
|
||||
}
|
||||
|
||||
public void LogNoTime(params string[] msg)
|
||||
{
|
||||
lock (Logfile) if (!IsEnabled) return;
|
||||
ColoredConsole.Write(msg);
|
||||
if (msg.Length == 1)
|
||||
lock (Logfile) File.AppendAllText(Logfile, msg[0]);
|
||||
else
|
||||
{
|
||||
StringBuilder strB = new();
|
||||
for (ushort i = 0; i < msg.Length; i++)
|
||||
strB.Append(msg[++i]);
|
||||
lock (Logfile) File.AppendAllText(Logfile, strB.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user