Streams logcat output through the anonymizer via io.Pipe

This commit is contained in:
Zoltan Papp
2026-04-19 21:36:26 +02:00
parent f01c1eea6a
commit 1c2275e1a4

View File

@@ -4,31 +4,38 @@ package debug
import (
"fmt"
"io"
"os/exec"
"strings"
log "github.com/sirupsen/logrus"
)
func (g *BundleGenerator) addPlatformLog() error {
cmd := exec.Command("/system/bin/logcat", "-d")
out, err := cmd.Output()
stdout, err := cmd.StdoutPipe()
if err != nil {
return fmt.Errorf("run logcat: %w", err)
return fmt.Errorf("logcat stdout pipe: %w", err)
}
var logReader *strings.Reader
if err := cmd.Start(); err != nil {
return fmt.Errorf("start logcat: %w", err)
}
var logReader io.Reader = stdout
if g.anonymize {
anonymized := g.anonymizer.AnonymizeString(string(out))
logReader = strings.NewReader(anonymized)
} else {
logReader = strings.NewReader(string(out))
var pw *io.PipeWriter
logReader, pw = io.Pipe()
go anonymizeLog(stdout, pw, g.anonymizer)
}
if err := g.addFileToZip(logReader, "logcat.txt"); err != nil {
return fmt.Errorf("add logcat to zip: %w", err)
}
log.Debugf("added logcat output to debug bundle (%d bytes)", len(out))
if err := cmd.Wait(); err != nil {
return fmt.Errorf("wait logcat: %w", err)
}
log.Debug("added logcat output to debug bundle")
return nil
}