Files
Ayay/SHH.ProcessLaunchers/DashboardLogger.cs

72 lines
2.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using SHH.ProcessLaunchers;
namespace SHH.ProcessLauncher
{
/// <summary>
/// 仪表盘日志适配器
/// <para>职责:实现 ILauncherLogger 接口,将启动器的底层日志转发给业务层的 LogHelper 和 UI 通知服务。</para>
/// </summary>
public class DashboardLogger : ILauncherLogger
{
#region --- ---
/// <summary>
/// 处理普通控制台日志 (StdOut/StdErr)
/// </summary>
public void LogConsole(string processId, string message, bool isError)
{
// 1. 在控制台/调试窗口刷屏显示
string prefix = isError ? "[ERR]" : "[INF]";
//// 这里可以直接输出,或者通过事件抛给 UI 层去绑定 TextBox
//// 为了演示,我们使用 LogHelper 的 Debug 方法
//LogHelper.Debug($"[Console] {prefix} <{processId}>: {message}");
}
/// <summary>
/// 处理关键生命周期事件
/// </summary>
public void LogLifecycle(string processId, LogAction action, LogTrigger trigger, string reason, object payload = null)
{
// 1. 生成高可读的结构化日志文本
string logText = $"[{action.ToString().ToUpper()}] 触发源:{trigger} | 原因:{reason}";
if (payload != null) logText += $" | 数据:{payload}";
// 2. 根据触发源 (LogTrigger) 决定业务系统的响应策略
switch (trigger)
{
//case LogTrigger.User:
// // 场景:用户点击了按钮
// // 策略:这是预期内操作,仅记录 Info 日志,不弹窗打扰用户
// LogHelper.Info(processId, logText);
// break;
//case LogTrigger.System:
// // 场景:崩溃自动重启、熔断恢复等
// // 策略:记录 Warn 日志,运维人员需要知道系统发生了自愈行为
// LogHelper.Warn(processId, logText);
// break;
//case LogTrigger.ResourceGuard:
// // 场景内存超限被杀、CPU 报警
// // 策略:这是严重问题,必须记录 Error 日志,并发送 UI 强提醒 (Toast/弹窗)
// LogHelper.Error(processId, logText);
// // 调用通知服务 (模拟)
// NotificationService.ShowWarning($"进程异常: {processId}", $"触发资源管控: {reason}");
// break;
//case LogTrigger.Scheduler:
// // 场景:定时重启
// LogHelper.Info(processId, $"[计划任务] {logText}");
// break;
//default:
// LogHelper.Info(processId, logText);
// break;
}
}
#endregion
}
}