2022-12-08 13:05:19 -03:00

39 lines
1.2 KiB
Go

// Copyright (c) 2020 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
package observer
import (
log "github.com/sirupsen/logrus"
"github.com/gitpod-io/gitpod/loadgen/pkg/loadgen"
)
// NewLogObserver produces a new observer that logs using logrus
func NewLogObserver(errorOnly bool) chan<- *loadgen.SessionEvent {
res := make(chan *loadgen.SessionEvent, defaultCapacity)
go func() {
for evt := range res {
if errorOnly && evt.Kind != loadgen.SessionError {
continue
}
switch evt.Kind {
case loadgen.SessionStart:
log.Info("session started")
case loadgen.SessionWorkspaceStart:
log.WithField("instanceID", evt.WorkspaceStart.Spec.Id).Info("workspace started")
case loadgen.SessionError:
log.WithError(evt.Error).Error("error")
case loadgen.SessionWorkspaceUpdate:
up := evt.WorkspaceUpdate.Update
log.WithField("instanceID", up.InstanceID).WithField("failed", up.Failed).WithField("phase", up.Phase).Info("workspace update")
case loadgen.SessionDone:
log.Info("session done")
}
}
}()
return res
}