using System; using System.IO; using UnityEngine; namespace Funique { /// /// Funique file logger
/// Record to log.txt
/// ------------------------------------------------
/// Funique 檔案紀錄者
/// 紀錄到 log.txt ///
internal sealed class FileLogger : ILogger { #if UNITY_ANDROID string filename => Path.Combine(Application.persistentDataPath, "log.txt"); #else string filename => Path.Combine(Application.streamingAssetsPath, "log.txt"); #endif public FileLogger() { if (File.Exists(filename)) File.Delete(filename); } public void Error(object message, string tag, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Error | {tag}] {message}\n"; File.AppendAllText(filename, t); } public void Error(object message, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Error] {message}\n"; File.AppendAllText(filename, t); } public void Log(object message, string tag, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Log | {tag}] {message}\n"; File.AppendAllText(filename, t); } public void Log(object message, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Log] {message}\n"; File.AppendAllText(filename, t); } public void Warning(object message, string tag, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Warning | {tag}] {message}\n"; File.AppendAllText(filename, t); } public void Warning(object message, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Warning] {message}\n"; File.AppendAllText(filename, t); } public void Assert(bool condition, object message, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Assert] {message}\n"; File.AppendAllText(filename, t); } public void Assert(bool condition, object message, string tag, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Assert | {tag}] {message}\n"; File.AppendAllText(filename, t); } public void Exception(Exception ex, int level) { if (FuniqueLogger.Level > level) return; string t = $"[Exception | {ex.Source}] {ex.Message}\n{ex.StackTrace}\n{ex.InnerException}"; File.AppendAllText(filename, t); } } }