Source: helpers/dockerService/serviceComponents/containerLogs.js

import { docker } from "../dockerService";
import { safeCall } from "../../../../src/helpers/safeCall.js";

/**
 * Return a stream of logs from a container and call callbacks for events.
 *
 * @param {string} containerId - Docker container id
 * @param {Function} onData - Called with chunk string when data arrives
 * @param {Function} onEnd - Called when stream ends
 * @param {Function} onError - Called on error
 */
export function getLogsStream(containerId, onData, onEnd, onError) {
  // Use shared safeCall util to call optional callbacks safely

  try {
    const container = docker.getContainer(containerId);
    container.logs({
      follow: true,
      stdout: true,
      stderr: true,
      tail: 100
    }, (err, stream) => {
      if (err) {
        safeCall(onError, err);
        return;
      }
      stream.on('data', chunk => safeCall(onData, chunk.toString()));
      stream.on('end', () => safeCall(onEnd));
      stream.on('error', err => safeCall(onError, err));
    });
  } catch (err) {
    safeCall(onError, err);
  }
}