mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
39 lines
1.2 KiB
Go
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
|
|
}
|