68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
package log
|
|
|
|
import (
|
|
"git.0x7f.app/WOJ/woj-server/internal/misc/config"
|
|
"git.0x7f.app/WOJ/woj-server/pkg/utils"
|
|
"github.com/samber/do"
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"log"
|
|
)
|
|
|
|
var _ Service = (*service)(nil)
|
|
|
|
type Service interface {
|
|
GetRawLogger() *zap.Logger
|
|
GetLogger(domain string) *zap.Logger
|
|
HealthCheck() error
|
|
}
|
|
|
|
func NewService(i *do.Injector) (Service, error) {
|
|
srv := &service{}
|
|
srv.confService = do.MustInvoke[config.Service](i)
|
|
|
|
c := srv.confService.GetConfig()
|
|
cfg := zap.Config{
|
|
Level: zap.NewAtomicLevelAt(utils.If(
|
|
c.Development,
|
|
zapcore.DebugLevel,
|
|
zapcore.InfoLevel,
|
|
)),
|
|
Development: c.Development,
|
|
Encoding: "console", // or json
|
|
EncoderConfig: utils.If(
|
|
c.Development,
|
|
zap.NewDevelopmentEncoderConfig(),
|
|
zap.NewProductionEncoderConfig(),
|
|
),
|
|
OutputPaths: []string{"stdout"},
|
|
ErrorOutputPaths: []string{"stderr"},
|
|
}
|
|
|
|
var err error
|
|
srv.logger, err = cfg.Build()
|
|
if err != nil {
|
|
log.Printf("Failed to setup Zap: %s\n", err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
return srv, nil
|
|
}
|
|
|
|
type service struct {
|
|
confService config.Service
|
|
logger *zap.Logger
|
|
}
|
|
|
|
func (s *service) GetRawLogger() *zap.Logger {
|
|
return s.logger
|
|
}
|
|
|
|
func (s *service) GetLogger(domain string) *zap.Logger {
|
|
return s.logger.Named(domain)
|
|
}
|
|
|
|
func (s *service) HealthCheck() error {
|
|
return nil
|
|
}
|