using System; using StardewModdingAPI.Framework; namespace StardewModdingAPI { /// <summary>A log writer which queues messages for output, and periodically flushes them to the console and log file.</summary> /// <remarks>Only one instance should be created.</remarks> [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 *********/ /// <summary>Manages reading and writing to the log file.</summary> private readonly LogFileManager LogFile; /********* ** Public methods *********/ /// <summary>Construct an instance.</summary> /// <param name="logFile">Manages reading and writing to the log file.</param> internal LogWriter(LogFileManager logFile) { this.WarnDeprecated(); this.LogFile = logFile; } /// <summary>Queue a message for output.</summary> /// <param name="message">The message to log.</param> public void WriteToLog(string message) { this.WarnDeprecated(); this.WriteToLog(new LogInfo(message)); } /// <summary>Queue a message for output.</summary> /// <param name="message">The message to log.</param> public void WriteToLog(LogInfo message) { this.WarnDeprecated(); string output = $"[{message.LogTime}] {message.Message}"; if (message.PrintConsole) { Console.ForegroundColor = message.Colour; Console.WriteLine(message); Console.ForegroundColor = ConsoleColor.Gray; } this.LogFile.WriteLine(output); } /********* ** Private methods *********/ /// <summary>Raise a deprecation warning.</summary> private void WarnDeprecated() { Program.DeprecationManager.Warn($"the {nameof(LogWriter)} class", "1.0", DeprecationLevel.Notice); } } }