using System; using UnityEngine; using AibisDream.Utility; namespace AibisDream.Kit { /// /// 真机文件日志:拦截 输出并写入 。 /// Editor 与 Android 不启用。 /// internal static class LogKit { /// /// 文件名称格式 /// 请注意,不要删除时间格式,否则会造成保存不成功 /// public static string LogFileName => "Log{0:_yyyy_MM_dd}.txt"; /// /// 日志保存最近几天的内容 /// public const int SaveDays = 30; /// /// 每一行的打印内容 /// private static string LogContent => Time + ": {0}\n{1}"; private static FileLogger _fileLogger; private static bool _isInitialized; private static string Time => DateTime.Now.ToString("[HH:mm:ss.fffd]"); [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] private static void Initialize() { #if !UNITY_EDITOR && !UNITY_ANDROID if (_isInitialized) return; _fileLogger = new FileLogger(LogFileName, ConstRef.LogFilePath, SaveDays); LogMessage($"Ver.{Application.version}", "", LogType.Log); Application.logMessageReceivedThreaded += LogMessage; Application.quitting += Shutdown; _isInitialized = true; #endif } private static void LogMessage(string condition, string stackTrace, LogType type) { _fileLogger?.Write(string.Format(LogContent, condition, stackTrace)); } private static void Shutdown() { if (!_isInitialized) return; Application.logMessageReceivedThreaded -= LogMessage; Application.quitting -= Shutdown; _fileLogger?.OnDestroy(); _fileLogger = null; _isInitialized = false; } } }