using System; using StardewModdingAPI.Framework; namespace StardewModdingAPI { /// A log writer which queues messages for output, and periodically flushes them to the console and log file. /// Only one instance should be created. [Obsolete("This class is internal and should not be referenced outside SMAPI. It will no longer be exposed in a future version.")] public class LogWriter { /********* ** Properties *********/ /// Manages reading and writing to the log file. private readonly LogFileManager LogFile; /********* ** Public methods *********/ /// Construct an instance. /// Manages reading and writing to the log file. internal LogWriter(LogFileManager logFile) { this.WarnDeprecated(); this.LogFile = logFile; } /// Queue a message for output. /// The message to log. public void WriteToLog(string message) { this.WarnDeprecated(); this.WriteToLog(new LogInfo(message)); } /// Queue a message for output. /// The message to log. public void WriteToLog(LogInfo message) { this.WarnDeprecated(); string output = $"[{message.LogTime}] {message.Message}"; if (message.PrintConsole) { if (Monitor.ConsoleSupportsColor) { Console.ForegroundColor = message.Colour; Console.WriteLine(message); Console.ResetColor(); } else Console.WriteLine(message); } this.LogFile.WriteLine(output); } /********* ** Private methods *********/ /// Raise a deprecation warning. private void WarnDeprecated() { Program.DeprecationManager.Warn($"the {nameof(LogWriter)} class", "1.0", DeprecationLevel.Info); } } }