Files
oc-schedulerd/daemons/interface.go

41 lines
1.2 KiB
Go
Raw Normal View History

package daemons
import (
"bufio"
"io"
2026-04-10 15:12:39 +02:00
"strings"
"github.com/rs/zerolog"
)
type Executor interface {
PrepareMonitorExec() []string
2026-03-26 11:14:29 +01:00
LaunchMonitor(args []string, execID string, ns string, l zerolog.Logger)
}
2026-04-10 15:12:39 +02:00
// logExecution streams lines from reader and re-logs them at the appropriate
// level by inspecting the zerolog level token already present in each line.
// Lines that contain " ERR " or " error" (case-insensitive) are emitted at
// Error so that they are visible beyond Debug-only sinks.
func logExecution(reader io.ReadCloser, l zerolog.Logger) {
scanner := bufio.NewScanner(reader)
2026-04-10 15:12:39 +02:00
// Increase buffer to 1 MB to handle wide JSON payloads.
scanner.Buffer(make([]byte, 1024*1024), 1024*1024)
for scanner.Scan() {
2026-04-10 15:12:39 +02:00
line := scanner.Text()
switch {
case strings.Contains(line, " ERR ") || strings.Contains(line, "level=error"):
l.Error().Msg(line)
case strings.Contains(line, " WRN ") || strings.Contains(line, "level=warning"):
l.Warn().Msg(line)
case strings.Contains(line, " INF ") || strings.Contains(line, "level=info"):
l.Info().Msg(line)
default:
l.Debug().Msg(line)
}
}
if err := scanner.Err(); err != nil {
l.Error().Err(err).Msg("log scanner error")
}
2026-02-25 13:19:46 +01:00
}