// Copyright (c) 2025 Nikolai Papin // // This file is part of Easywish // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See // the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package logger import ( "sync" "easywish/config" "go.uber.org/zap" ) var ( instance *zap.Logger once sync.Once ) func NewLogger() *zap.Logger { once.Do(func() { cfg := config.GetConfig() var err error if cfg.Environment == "production" { instance, err = zap.NewProduction() } else { instance, err = zap.NewDevelopment() } if err != nil { panic("failed to initialize logger: " + err.Error()) } }) return instance } type SyncLogger struct { *zap.Logger } func NewSyncLogger(logger *zap.Logger) *SyncLogger { return &SyncLogger{logger} } func (s *SyncLogger) Close() error { return s.Sync() }