AvaloniaTool/ZTools/Models/Log.cs

62 lines
1.3 KiB
C#

using System;
using System.Text;
namespace ZTools;
public enum LogLevel
{
Error,
Warning,
Info,
Debug,
}
public static class Log
{
private static StringBuilder _logBuilder;
private static StringBuilder _tmp;
internal static StringBuilder LogBuilder => _logBuilder;
public delegate void LogDelegate(string msg);
public static LogDelegate LogCallback;
static Log()
{
_logBuilder = new StringBuilder();
_tmp = new StringBuilder();
}
public static void Debug(object message)
{
Write(message, LogLevel.Debug);
}
public static void Info(object message)
{
Write(message, LogLevel.Info);
}
public static void Error(object message)
{
Write(message, LogLevel.Error);
}
public static void Warning(object message)
{
Write(message, LogLevel.Warning);
}
static void Write(object message, LogLevel level = LogLevel.Debug)
{
// var bytes = Encoding.UTF8.GetBytes(message.ToString() ?? string.Empty);
// var s = Encoding.UTF8.GetString(bytes);
_tmp.Clear();
_tmp.Append($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}] {level}: {message}");
var format = _tmp.ToString();
_logBuilder.AppendLine(format);
Console.WriteLine(format);
LogCallback?.Invoke(format);
}
}