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