init; project structure & bybit provider
This commit is contained in:
commit
ae096d4820
14 changed files with 482 additions and 0 deletions
54
internal/logger/logger.go
Normal file
54
internal/logger/logger.go
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
package logger
|
||||
|
||||
import (
|
||||
"crypto_alert_bot/internal/config"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
prettyLogger "github.com/charmbracelet/log"
|
||||
)
|
||||
|
||||
var levelAdapter = map[string]slog.Level{
|
||||
"debug": slog.LevelDebug,
|
||||
"info": slog.LevelInfo,
|
||||
"warn": slog.LevelWarn,
|
||||
"error": slog.LevelError,
|
||||
}
|
||||
|
||||
const (
|
||||
encodingConsole = "console"
|
||||
encodingJSON = "json"
|
||||
)
|
||||
|
||||
const (
|
||||
serviceNameKey = "service_name"
|
||||
)
|
||||
|
||||
func NewAppLogger(cfg *config.Logger) *slog.Logger {
|
||||
var log *slog.Logger
|
||||
// select log level
|
||||
level, ok := levelAdapter[cfg.Level]
|
||||
if !ok {
|
||||
panic(fmt.Errorf("logger level not correct: %s", level))
|
||||
}
|
||||
// make handler
|
||||
switch cfg.Encoding {
|
||||
case encodingConsole:
|
||||
handler := prettyLogger.NewWithOptions(os.Stdout, prettyLogger.Options{
|
||||
Level: prettyLogger.Level(level),
|
||||
ReportTimestamp: true,
|
||||
ReportCaller: true,
|
||||
})
|
||||
log = slog.New(handler)
|
||||
case encodingJSON:
|
||||
handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: level})
|
||||
log = slog.New(handler)
|
||||
default:
|
||||
panic(fmt.Errorf("logger encoding is not correct: %s", cfg.Encoding))
|
||||
}
|
||||
// add field with service name
|
||||
log = log.With(serviceNameKey, cfg.ServiceName)
|
||||
|
||||
return log
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue