in cli_tools/common/utils/logging/service/logger.go [224:264]
func (l *Logger) runWithServerLogging(function func() (Loggable, error),
projectPointer *string) (*ComputeImageToolsLogExtension, error) {
var logExtension *ComputeImageToolsLogExtension
// Send log asynchronously. No need to interrupt the main flow when failed to send log, just
// keep moving.
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
l.logStart()
}()
loggable, err := runWithRecovery(function)
l.updateParams(projectPointer)
if err != nil {
wg.Add(1)
go func() {
defer wg.Done()
logExtension, _ = l.logFailure(err, loggable)
// Remove new lines from multi-line failure messages as gcloud depends on
// log prefix to filter out relevant log lines. Making this change in
// daisy/error.go Error() func would potentially affect other clients of
// Daisy with unclear consequences, thus limiting the change to
// import/export wrappers
log.Println(removeNewLinesFromMultilineError(logExtension.OutputInfo.FailureMessage))
}()
} else {
wg.Add(1)
go func() {
defer wg.Done()
logExtension, _ = l.logSuccess(loggable)
}()
}
wg.Wait()
return logExtension, err
}