using System.Collections.ObjectModel; using System.Windows; using PersonalToolBox.Models; namespace PersonalToolBox.Services; /// /// 日志服务实现,管理底部日志打印栏数据 /// 通过 ObservableCollection 将日志实时推送到 UI /// public class LogService : ILogService { public ObservableCollection Logs { get; } = new(); public void Info(string message) { var entry = new LogEntry { Timestamp = DateTime.Now, Level = LogLevel.Info, Content = message }; AddLog(entry); } public void Warning(string message) { var entry = new LogEntry { Timestamp = DateTime.Now, Level = LogLevel.Warning, Content = message }; AddLog(entry); } public void Error(string message) { var entry = new LogEntry { Timestamp = DateTime.Now, Level = LogLevel.Error, Content = message }; AddLog(entry); } public void Clear() { if (Application.Current != null) Application.Current.Dispatcher.Invoke(() => Logs.Clear()); else Logs.Clear(); } /// /// 将日志条目安全地添加到 UI 线程的集合中 /// private void AddLog(LogEntry entry) { if (Application.Current != null) Application.Current.Dispatcher.Invoke(() => Logs.Add(entry)); else Logs.Add(entry); } }