37 lines
1.5 KiB
C#
37 lines
1.5 KiB
C#
using SHH.ProcessLaunchers;
|
||
using System.Diagnostics;
|
||
using System.Windows;
|
||
|
||
namespace SHH.CameraDashboard
|
||
{
|
||
/// <summary>
|
||
/// 启动器日志适配器
|
||
/// <para>将底层 ProcessManager 的日志桥接到 System.Diagnostics.Debug 和 MessageBox</para>
|
||
/// </summary>
|
||
public class ProcessDashboardLogger : ILauncherLogger
|
||
{
|
||
public void LogConsole(string processId, string message, bool isError)
|
||
{
|
||
// 将子进程的控制台输出转发到 VS 的输出窗口,方便调试
|
||
string prefix = isError ? "[STDERR]" : "[STDOUT]";
|
||
Debug.WriteLine($"{prefix} <{processId}>: {message}");
|
||
}
|
||
|
||
public void LogLifecycle(string processId, LogAction action, LogTrigger trigger, string reason, object payload = null)
|
||
{
|
||
string msg = $"[ProcessManager] {processId} - {action}: {reason}";
|
||
Debug.WriteLine(msg);
|
||
|
||
// 如果是严重错误(如资源超限被杀),弹窗提醒
|
||
if (trigger == LogTrigger.ResourceGuard && action == LogAction.Restart)
|
||
{
|
||
// 注意:确保在 UI 线程弹窗
|
||
Application.Current.Dispatcher.Invoke(() =>
|
||
{
|
||
MessageBox.Show($"进程 [{processId}] 资源异常!\n原因:{reason}\n系统已执行自动重启。",
|
||
"资源管控警报", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||
});
|
||
}
|
||
}
|
||
}
|
||
} |