using System;
using System.Text;
using Godot;
namespace ColdMint.scripts.debug;
public static class LogCat
{
private static readonly StringBuilder StringBuilder = new StringBuilder();
private static StringBuilder HandleMessage(string message)
{
StringBuilder.Clear();
StringBuilder.Append(DateTime.Now.ToString("yyyy-M-d HH:mm:ss |"));
StringBuilder.Append(TranslationServer.Translate(message));
return StringBuilder;
}
///
/// Print log
/// 打印日志
///
///
///message
///消息
/// This message supports localized output, assuming there is already a translation key, Hello = 你好, passing hello will output 你好.
/// 这个消息支持本地化输出,假设已存在翻译key,Hello = 你好,传入Hello则会输出你好。
///
public static void Log(string message)
{
GD.Print(HandleMessage(message));
}
///
/// Print error log
/// 打印错误日志
///
///
///message
///消息
/// This message supports localized output, assuming there is already a translation key, Hello = 你好, passing hello will output 你好.
/// 这个消息支持本地化输出,假设已存在翻译key,Hello = 你好,传入Hello则会输出你好。
///
public static void LogError(string message)
{
GD.PrintErr(HandleMessage(message));
}
public static void LogErrorWithFormat(string message, params object?[] args)
{
GD.PrintErr(string.Format(HandleMessage(message).ToString(), args));
}
public static void LogWithFormat(string message, params object?[] args)
{
GD.Print(string.Format(HandleMessage(message).ToString(), args));
}
///
/// This method is called when an exception is caught
/// 当捕获异常后调用此方法
///
///
public static void WhenCaughtException(Exception e)
{
//Log an exception here or send it to the server.
//请在这里记录异常或将异常发送至服务器。
GD.PrintErr(HandleMessage(e.Message).Append('\n').Append(e.StackTrace));
}
}