1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package logger
- import (
- "os"
- "git.linuxforward.com/byom/byom-golang-lib/pkg/config"
- "git.linuxforward.com/byom/byom-golang-lib/pkg/errors"
- "github.com/sirupsen/logrus"
- )
- func NewLogger(config *config.Log) (*logrus.Logger, error) {
- logger := logrus.New()
- // Set output
- logger.SetOutput(os.Stdout)
- // Validate and set formatter
- switch config.Format {
- 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
- }
|