namespace SHH.ProcessLaunchers { /// /// 启动器专用日志接口 /// 核心职责:解耦日志的生产与消费,支持结构化语义记录。 /// 实现类可将日志转发至 UI 控制台、本地文件或远程日志中心。 /// public interface ILauncherLogger { /// /// 记录普通控制台日志 (流式日志) /// 用于接管子进程的 StdOut 和 StdErr /// /// 进程唯一标识 (ProcessConfig.Id) /// 日志内容 /// 是否为错误流 (True=StdErr, False=StdOut) void LogConsole(string processId, string message, bool isError); /// /// 记录关键生命周期事件 (结构化日志) /// 用于记录启停、崩溃、熔断等关键节点,供运维分析。 /// /// 进程唯一标识 (ProcessConfig.Id) /// 动作类型 (Start/Stop/Crash...) /// 触发源 (User/System...) /// 操作原因或备注 (必填,用于追溯) /// 附加上下文对象 (可选,如 { PID=123, ExitCode=-1 }) void LogLifecycle(string processId, LogAction action, LogTrigger trigger, string reason, object payload = null); } /// /// 默认空日志实现 (Null Object Pattern) /// 用于在未注入 Logger 时防止 NullReferenceException,保证程序健壮性。 /// public class NullLogger : ILauncherLogger { /// /// 空实现:忽略控制台日志 /// public void LogConsole(string processId, string message, bool isError) { // Do nothing } /// /// 空实现:忽略生命周期日志 /// public void LogLifecycle(string processId, LogAction action, LogTrigger trigger, string reason, object payload = null) { // Do nothing } } }