diff --git a/client/internal/debug/debug_android.go b/client/internal/debug/debug_android.go index 398e40872..a4e2b3e98 100644 --- a/client/internal/debug/debug_android.go +++ b/client/internal/debug/debug_android.go @@ -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 }