123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package logger
- import (
- "os"
- "github.com/sirupsen/logrus"
- )
- func NewLogger(config *Config) (*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, NewConfigError(
- "configure",
- "format",
- config.Format,
- ErrInvalidFormat,
- "supported formats are 'json' and 'text'",
- )
- }
- // 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, NewConfigError(
- "configure",
- "level",
- config.Level,
- ErrInvalidLevel,
- err.Error(),
- )
- }
- logger.SetLevel(level)
- }
- return logger, nil
- }
|