mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-15 08:25:09 +01:00
Added logger singleton
This commit is contained in:
27
utils/logger/logger.go
Normal file
27
utils/logger/logger.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var (
|
||||
instance Logger // Global instance of Logger interface
|
||||
once sync.Once // Ensures logger is initialized only once
|
||||
)
|
||||
|
||||
// Init initializes the global logger. This function should be called once, ideally during the app startup.
|
||||
func Init(zapLogger *zap.Logger) {
|
||||
once.Do(func() {
|
||||
instance = NewZapLogger(zapLogger) // Assign the zapLogger as the global logger
|
||||
})
|
||||
}
|
||||
|
||||
// Get returns the global logger instance.
|
||||
func Get() Logger {
|
||||
if instance == nil {
|
||||
panic("Logger is not initialized. Call logger.Init() before using the logger.")
|
||||
}
|
||||
return instance
|
||||
}
|
||||
14
utils/logger/logger_interface.go
Normal file
14
utils/logger/logger_interface.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package logger
|
||||
|
||||
import "go.uber.org/zap"
|
||||
|
||||
// Logger interface to abstract logging
|
||||
type Logger interface {
|
||||
Info(msg string, fields ...zap.Field)
|
||||
Warn(msg string, fields ...zap.Field)
|
||||
Error(msg string, fields ...zap.Field)
|
||||
Debug(msg string, fields ...zap.Field)
|
||||
Fatal(msg string, fields ...zap.Field)
|
||||
|
||||
Named(name string) Logger
|
||||
}
|
||||
37
utils/logger/zap_logger.go
Normal file
37
utils/logger/zap_logger.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type ZapLogger struct {
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
// NewZapLogger creates a new ZapLogger instance
|
||||
func NewZapLogger(zapLogger *zap.Logger) *ZapLogger {
|
||||
return &ZapLogger{logger: zapLogger}
|
||||
}
|
||||
|
||||
// Implement the Logger interface methods
|
||||
func (z *ZapLogger) Info(msg string, fields ...zap.Field) {
|
||||
z.logger.Info(msg, fields...)
|
||||
}
|
||||
|
||||
func (z *ZapLogger) Warn(msg string, fields ...zap.Field) {
|
||||
z.logger.Warn(msg, fields...)
|
||||
}
|
||||
|
||||
func (z *ZapLogger) Error(msg string, fields ...zap.Field) {
|
||||
z.logger.Error(msg, fields...)
|
||||
}
|
||||
func (z *ZapLogger) Fatal(msg string, fields ...zap.Field) {
|
||||
z.logger.Fatal(msg, fields...)
|
||||
}
|
||||
|
||||
func (z *ZapLogger) Debug(msg string, fields ...zap.Field) {
|
||||
z.logger.Debug(msg, fields...)
|
||||
}
|
||||
func (z *ZapLogger) Named(name string) Logger {
|
||||
return &ZapLogger{logger: z.logger.Named(name)}
|
||||
}
|
||||
Reference in New Issue
Block a user