using Managers; using Serilog; using UnityEngine; using Utils; using SerilogLogger = Serilog.Core.Logger; namespace Logging { public class UnityLogger : Singleton, ILaunchManager { private bool _initialized = false; private readonly SerilogLogger _logger = new LoggerConfiguration() .WriteTo.File("Logs/UnityLog.txt") .CreateLogger(); public void Init() { if (_initialized) return; Application.logMessageReceivedThreaded += OnLogMessageReceived; _initialized = true; } public void Clear() { } public string StepDescription => "初始化日志"; private void OnLogMessageReceived(string logString, string stackTrace, LogType type) { switch (type) { case LogType.Assert: { _logger.Warning("\nContent: {0}", logString); break; } case LogType.Log: { _logger.Information("\nContent: {0}", logString); break; } case LogType.Warning: { _logger.Warning("\nContent: {0}", logString); break; } case LogType.Error: { _logger.Error("\nContent: {0}\nStackTrace:\n{1}", logString, stackTrace[..^1]); break; } case LogType.Exception: { _logger.Fatal("\nContent: {0}\nStackTrace:\n{1}", logString, stackTrace[..^1]); break; } default: { _logger.Information("\nContent: {0}", logString); break; } } } } }