MCPcopy Create free account
hub / github.com/pydio/cells / pipeOutputs

Method pipeOutputs

common/utils/fork/process.go:162–224  ·  view source on GitHub ↗
(cmd *exec.Cmd)

Source from the content-addressed store, hash-verified

160}
161
162func (p *Process) pipeOutputs(cmd *exec.Cmd) error {
163 stdout, err := cmd.StdoutPipe()
164 if err != nil {
165 return err
166 }
167 stderr, err := cmd.StderrPipe()
168 if err != nil {
169 return err
170 }
171 scannerOut := bufio.NewScanner(stdout)
172 defaultLogContext := runtime.WithServiceName(p.ctx, p.o.name)
173
174 logs := regexp.MustCompile("^(?P<log_date>[^\t]+)\t(?P<log_level>[^\t]+)\t(?P<log_name>[^\t]+)\t(?P<log_message>[^\t]+)(\t)?(?P<log_fields>[^\t]*)$")
175
176 // prefix := fmt.Sprintf("%-14s", "["+p.o.name+"]")
177 go func() {
178 var sb strings.Builder
179
180 for scannerOut.Scan() {
181 sb.Reset()
182 // sb.WriteString(prefix)
183 text := strings.TrimRight(scannerOut.Text(), "\n")
184 // merged := false
185 if parsed := logs.FindStringSubmatch(text); len(parsed) >= 5 {
186 sb.WriteString(text)
187 sb.WriteString("\n")
188
189 log.StdOut.WriteString(sb.String())
190 } else {
191 sb.WriteString(text)
192
193 log.Logger(defaultLogContext).Info(sb.String())
194 }
195 }
196 }()
197 scannerErr := bufio.NewScanner(stderr)
198 go func() {
199 var sb strings.Builder
200 for scannerErr.Scan() {
201 sb.Reset()
202 // sb.WriteString(prefix)
203
204 text := strings.TrimRight(scannerErr.Text(), "\n")
205 merged := false
206 for _, sName := range p.serviceNames {
207 if strings.Contains(text, sName) {
208 sb.WriteString(text)
209 sb.WriteString("\n")
210
211 log.StdOut.WriteString(sb.String())
212 merged = true
213 break
214 }
215 }
216 if !merged {
217 sb.WriteString(text)
218
219 log.Logger(defaultLogContext).Info(sb.String())

Callers 1

StartAndWaitMethod · 0.95

Calls 6

ScanMethod · 0.95
WithServiceNameFunction · 0.92
LoggerFunction · 0.92
ResetMethod · 0.65
StringMethod · 0.65
InfoMethod · 0.65

Tested by

no test coverage detected