using UnityEngine; namespace RR.Common.Utility { /// /// Пример инициализации системы логирования с CompositeLogger и FileLogger. /// Прикрепите этот скрипт к любому GameObject на сцене. /// public class LoggerInitializer : MonoBehaviour { [SerializeField] private bool enableFileLogging = true; [SerializeField] private string customLogPath = ""; // Оставьте пустым для использования пути по умолчанию [SerializeField] private bool appendToExistingLog = true; [SerializeField] private bool clearLogOnStart = false; private CompositeLogger compositeLogger; private FileLogger fileLogger; private void Awake() { InitializeLogging(); } private void InitializeLogging() { // Создаем композитный логгер compositeLogger = new CompositeLogger(); compositeLogger.Initialize(); if (enableFileLogging) { // Создаем файловый логгер string logPath = string.IsNullOrEmpty(customLogPath) ? null : customLogPath; fileLogger = new FileLogger(logPath, appendToExistingLog); if (clearLogOnStart) { fileLogger.Clear(); } // Добавляем файловый логгер в композитный compositeLogger.AddLogger(fileLogger); Debug.Log( $"[LoggerInitializer] Файловое логирование включено. Путь: {(logPath ?? Application.persistentDataPath + "/game.log")}"); } // Опционально: можно заменить стандартный логгер Unity // Debug.unityLogger = compositeLogger; // Тестовые сообщения TestLogging(); } private void TestLogging() { compositeLogger.Log("Система логирования инициализирована"); compositeLogger.LogWarning("Test", "Это тестовое предупреждение"); compositeLogger.LogError("Test", "Это тестовая ошибка"); Debug.Log($"Логи сохраняются в: {Application.persistentDataPath}"); } private void OnApplicationQuit() { // Закрываем файловый логгер при выходе fileLogger?.Dispose(); Debug.Log("[LoggerInitializer] Файловый логгер закрыт"); } private void OnDestroy() { // На всякий случай закрываем при уничтожении объекта fileLogger?.Dispose(); } // Публичные методы для использования из других скриптов public static void LogToFile(string message) { Debug.Log(message); } public static void LogWarningToFile(string message) { Debug.LogWarning(message); } public static void LogErrorToFile(string message) { Debug.LogError(message); } } }