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);
}
}