Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'workhorse/internal/log/logging.go')
-rw-r--r--workhorse/internal/log/logging.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/workhorse/internal/log/logging.go b/workhorse/internal/log/logging.go
new file mode 100644
index 00000000000..c65ec07743a
--- /dev/null
+++ b/workhorse/internal/log/logging.go
@@ -0,0 +1,88 @@
+package log
+
+import (
+ "net/http"
+
+ "github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/labkit/log"
+ "gitlab.com/gitlab-org/labkit/mask"
+ "golang.org/x/net/context"
+
+ "gitlab.com/gitlab-org/gitlab-workhorse/internal/helper"
+)
+
+type Fields = log.Fields
+
+type Builder struct {
+ entry *logrus.Entry
+ fields log.Fields
+ req *http.Request
+ err error
+}
+
+func NewBuilder() *Builder {
+ return &Builder{entry: log.WithFields(nil)}
+}
+
+func WithRequest(r *http.Request) *Builder {
+ return NewBuilder().WithRequest(r)
+}
+
+func (b *Builder) WithRequest(r *http.Request) *Builder {
+ if r == nil {
+ return b
+ }
+
+ b.req = r
+ b.WithFields(log.ContextFields(r.Context())).WithFields(
+ Fields{
+ "method": r.Method,
+ "uri": mask.URL(r.RequestURI),
+ },
+ )
+ return b
+}
+
+func WithFields(fields Fields) *Builder {
+ return NewBuilder().WithFields(fields)
+}
+
+func (b *Builder) WithFields(fields Fields) *Builder {
+ b.fields = fields
+ b.entry = b.entry.WithFields(fields)
+ return b
+}
+
+func WithContextFields(ctx context.Context, fields Fields) *Builder {
+ return WithFields(log.ContextFields(ctx)).WithFields(fields)
+}
+
+func WithError(err error) *Builder {
+ return NewBuilder().WithError(err)
+}
+
+func (b *Builder) WithError(err error) *Builder {
+ b.err = err
+ b.entry = b.entry.WithError(err)
+ return b
+}
+
+func Info(args ...interface{}) {
+ NewBuilder().Info(args...)
+}
+
+func (b *Builder) Info(args ...interface{}) {
+ b.entry.Info(args...)
+}
+
+func Error(args ...interface{}) {
+ NewBuilder().Error(args...)
+}
+
+func (b *Builder) Error(args ...interface{}) {
+ b.entry.Error(args...)
+
+ if b.req != nil && b.err != nil {
+ helper.CaptureRavenError(b.req, b.err, b.fields)
+ }
+}