using System; using System.Drawing; using System.IO; using System.Windows.Forms; namespace FLCompanionByDvurechensky.Services { /// /// Сервис логирования /// public class LogService { /// /// Поле вывода информации интерфейса /// private RichTextBox Logger { get; set; } /// /// Время начала логирования /// private string LogDateTime { get; set; } /// /// Директория логирования /// private string DirLog { get { var path = "Log"; if(!Directory.Exists(path)) Directory.CreateDirectory(path); else { var directoryInfo = new DirectoryInfo(path); if (directoryInfo.GetFiles().Length > 50) { Directory.Delete(path, true); //true - если директория не пуста (удалит и файлы и папки) Directory.CreateDirectory(path); } } return path; } } /// /// Путь до файла лога /// private string LogPath => Path.Combine(DirLog, $"{LogDateTime}_log.txt"); /// /// Конструктор /// /// Объект вывода интерфейса public LogService(RichTextBox logger) { Logger = logger; LogDateTime = DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss"); } /// /// Обычное событие /// /// текст сообщения public void LogEvent(string message) { Logger.BeginInvoke(new Action(() => { Logger.BackColor = Color.LightGray; Logger.SelectionColor = Color.Black; var msg = "-----> " + message + Environment.NewLine; Logger.AppendText(msg); File.AppendAllText(LogPath, msg); Logger.SelectionStart = Logger.TextLength; Logger.ScrollToCaret(); })); } /// /// Событие ошибки /// /// текст ошибки public void ErrorLogEvent(string message) { Logger.BeginInvoke(new Action(() => { Logger.BackColor = Color.LightGray; Logger.SelectionColor = Color.Red; var msg = "!~ " + message + Environment.NewLine; Logger.AppendText(msg); File.AppendAllText(LogPath, msg); Logger.SelectionStart = Logger.TextLength; Logger.ScrollToCaret(); })); } /// /// Событие предупреждения /// /// текст предупреждения public void ErrorWarningEvent(string message) { Logger.BeginInvoke(new Action(() => { Logger.BackColor = Color.LightGray; Logger.SelectionColor = Color.DarkBlue; var msg = "#~ " + message + Environment.NewLine; Logger.AppendText(msg); File.AppendAllText(LogPath, msg); Logger.SelectionStart = Logger.TextLength; Logger.ScrollToCaret(); })); } } }