123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package logger
- import (
- "os"
- "git.linuxforward.com/byom/byom-golang-lib/pkg/errors"
- "github.com/sirupsen/logrus"
- )
- type LogConfig struct {
- Level string
- Formatter string // "json" or "text"
- }
- func NewLogger(config LogConfig) (*logrus.Logger, error) {
- logger := logrus.New()
- // Set output
- logger.SetOutput(os.Stdout)
- // Validate and set formatter
- switch config.Formatter {
- case "json":
- logger.SetFormatter(&logrus.JSONFormatter{})
- case "text":
- logger.SetFormatter(&logrus.TextFormatter{
- FullTimestamp: true,
- })
- case "":
- // Default to text formatter
- logger.SetFormatter(&logrus.TextFormatter{
- FullTimestamp: true,
- })
- default:
- return nil, errors.NewConfigError("logger.formatter", errors.ErrInvalidInput)
- }
- // Validate and set level
- if config.Level == "" {
- // Default to info level
- logger.SetLevel(logrus.InfoLevel)
- } else {
- level, err := logrus.ParseLevel(config.Level)
- if err != nil {
- return nil, errors.NewConfigError("logger.level", err)
- }
- logger.SetLevel(level)
- }
- return logger, nil
- }
|