1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
package log
import (
"context"
"io"
"os"
"path/filepath"
"github.com/sirupsen/logrus"
"gitlab.com/gitlab-org/gitaly/v16/internal/helper/perm"
"gitlab.com/gitlab-org/labkit/correlation"
)
// NewHookLogger creates a file logger, since both stderr and stdout will be displayed in git output
func NewHookLogger(ctx context.Context) *logrus.Entry {
logger := logrus.New()
logDir := os.Getenv(GitalyLogDirEnvKey)
if logDir == "" {
logger.SetOutput(io.Discard)
return logrus.NewEntry(logger)
}
logFile, err := os.OpenFile(filepath.Join(logDir, "gitaly_hooks.log"), os.O_CREATE|os.O_APPEND|os.O_WRONLY, perm.SharedFile)
if err != nil {
logger.SetOutput(io.Discard)
} else {
logger.SetOutput(logFile)
}
logger.SetFormatter(UTCTextFormatter())
return logger.WithFields(logFieldsFromContext(ctx))
}
func logFieldsFromContext(ctx context.Context) logrus.Fields {
return logrus.Fields{
correlation.FieldName: correlation.ExtractFromContext(ctx),
}
}
|