Added logger singleton

This commit is contained in:
stratic-dev
2024-10-11 00:15:11 +01:00
parent 32dbfa7514
commit 44692e986e
12 changed files with 165 additions and 74 deletions

View File

@@ -9,6 +9,8 @@ import (
"sync"
"time"
"erupe-ce/utils/logger"
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"github.com/jmoiron/sqlx"
@@ -16,7 +18,6 @@ import (
)
type Config struct {
Logger *zap.Logger
DB *sqlx.DB
ErupeConfig *_config.Config
}
@@ -24,7 +25,7 @@ type Config struct {
// APIServer is Erupes Standard API interface
type APIServer struct {
sync.Mutex
logger *zap.Logger
logger logger.Logger
erupeConfig *_config.Config
db *sqlx.DB
httpServer *http.Server
@@ -33,8 +34,9 @@ type APIServer struct {
// NewAPIServer creates a new Server type.
func NewAPIServer(config *Config) *APIServer {
s := &APIServer{
logger: config.Logger,
logger: logger.Get().Named("API"),
erupeConfig: config.ErupeConfig,
db: config.DB,
httpServer: &http.Server{},

View File

@@ -7,9 +7,12 @@ import (
"erupe-ce/network/binpacket"
"erupe-ce/network/mhfpacket"
"erupe-ce/utils/byteframe"
"erupe-ce/utils/logger"
"erupe-ce/utils/mhfcid"
"erupe-ce/utils/mhfcourse"
"erupe-ce/utils/token"
"sync"
"fmt"
"math"
"strconv"
@@ -39,24 +42,27 @@ const (
BroadcastTypeWorld = 0x0a
)
var commands map[string]_config.Command
var (
commands map[string]_config.Command
once sync.Once // Ensures that initialization happens only once
commandsMu sync.Mutex // Mutex to ensure thread safety for commands map
)
func init() {
commands = make(map[string]_config.Command)
zapConfig := zap.NewDevelopmentConfig()
zapConfig.DisableCaller = true
zapLogger, _ := zapConfig.Build()
defer zapLogger.Sync()
logger := zapLogger.Named("commands")
cmds := _config.ErupeConfig.Commands
for _, cmd := range cmds {
commands[cmd.Name] = cmd
if cmd.Enabled {
logger.Info(fmt.Sprintf("Command %s: Enabled, prefix: %s", cmd.Name, cmd.Prefix))
} else {
logger.Info(fmt.Sprintf("Command %s: Disabled", cmd.Name))
func (server *Server) initCommands() {
once.Do(func() {
commands = make(map[string]_config.Command)
commandLogger := logger.Get().Named("command")
cmds := _config.ErupeConfig.Commands
for _, cmd := range cmds {
commands[cmd.Name] = cmd
if cmd.Enabled {
commandLogger.Info(fmt.Sprintf("%s: Enabled, prefix: %s", cmd.Name, cmd.Prefix))
} else {
commandLogger.Info(fmt.Sprintf("%s: Disabled", cmd.Name))
}
}
}
})
}
func sendDisabledCommandMessage(s *Session, cmd _config.Command) {

View File

@@ -9,6 +9,7 @@ import (
_config "erupe-ce/config"
"erupe-ce/server/discordbot"
"erupe-ce/utils/gametime"
"erupe-ce/utils/logger"
"github.com/jmoiron/sqlx"
"go.uber.org/zap"
@@ -17,7 +18,6 @@ import (
// Config struct allows configuring the server.
type Config struct {
ID uint16
Logger *zap.Logger
DB *sqlx.DB
DiscordBot *discordbot.DiscordBot
ErupeConfig *_config.Config
@@ -39,7 +39,7 @@ type Server struct {
GlobalID string
IP string
Port uint16
logger *zap.Logger
logger logger.Logger
db *sqlx.DB
erupeConfig *_config.Config
acceptConns chan net.Conn
@@ -92,7 +92,7 @@ func NewServer(config *Config) *Server {
}
server := &Server{
ID: config.ID,
logger: config.Logger,
logger: logger.Get().Named("channel-" + fmt.Sprint(config.ID)),
db: config.DB,
erupeConfig: config.ErupeConfig,
acceptConns: make(chan net.Conn),
@@ -114,9 +114,9 @@ func NewServer(config *Config) *Server {
questCacheData: make(map[int][]byte),
questCacheTime: make(map[int]time.Time),
}
server.initCommands()
server.i18n = getLangStrings(server)
return server
}

View File

@@ -15,6 +15,7 @@ import (
"erupe-ce/network"
"erupe-ce/network/mhfpacket"
"erupe-ce/utils/byteframe"
"erupe-ce/utils/logger"
"erupe-ce/utils/stringstack"
"go.uber.org/zap"
@@ -23,7 +24,7 @@ import (
// Session holds state for the channel server connection.
type Session struct {
sync.Mutex
logger *zap.Logger
logger logger.Logger
server *Server
rawConn net.Conn
cryptConn *network.CryptConn

View File

@@ -2,6 +2,7 @@ package discordbot
import (
_config "erupe-ce/config"
"erupe-ce/utils/logger"
"regexp"
"github.com/bwmarrin/discordgo"
@@ -38,21 +39,20 @@ var Commands = []*discordgo.ApplicationCommand{
type DiscordBot struct {
Session *discordgo.Session
config *_config.Config
logger *zap.Logger
logger logger.Logger
MainGuild *discordgo.Guild
RelayChannel *discordgo.Channel
}
type Options struct {
Config *_config.Config
Logger *zap.Logger
}
func NewDiscordBot(options Options) (discordBot *DiscordBot, err error) {
session, err := discordgo.New("Bot " + options.Config.Discord.BotToken)
discordLogger := logger.Get().Named("discord")
if err != nil {
options.Logger.Fatal("Discord failed", zap.Error(err))
discordLogger.Fatal("Discord failed", zap.Error(err))
return nil, err
}
@@ -63,13 +63,13 @@ func NewDiscordBot(options Options) (discordBot *DiscordBot, err error) {
}
if err != nil {
options.Logger.Fatal("Discord failed to create relayChannel", zap.Error(err))
discordLogger.Fatal("Discord failed to create relayChannel", zap.Error(err))
return nil, err
}
discordBot = &DiscordBot{
config: options.Config,
logger: options.Logger,
logger: discordLogger,
Session: session,
RelayChannel: relayChannel,
}

View File

@@ -10,6 +10,7 @@ import (
_config "erupe-ce/config"
"erupe-ce/network"
"erupe-ce/utils/logger"
"github.com/jmoiron/sqlx"
"go.uber.org/zap"
@@ -18,7 +19,7 @@ import (
// Server is a MHF entrance server.
type Server struct {
sync.Mutex
logger *zap.Logger
logger logger.Logger
erupeConfig *_config.Config
db *sqlx.DB
listener net.Listener
@@ -27,7 +28,7 @@ type Server struct {
// Config struct allows configuring the server.
type Config struct {
Logger *zap.Logger
Logger logger.Logger
DB *sqlx.DB
ErupeConfig *_config.Config
}

View File

@@ -3,6 +3,7 @@ package signserver
import (
"database/sql"
"encoding/hex"
"erupe-ce/utils/logger"
"erupe-ce/utils/stringsupport"
"fmt"
"net"
@@ -28,7 +29,7 @@ const (
// Session holds state for the sign server connection.
type Session struct {
sync.Mutex
logger *zap.Logger
logger logger.Logger
server *Server
rawConn net.Conn
cryptConn *network.CryptConn

View File

@@ -8,6 +8,7 @@ import (
_config "erupe-ce/config"
"erupe-ce/network"
"erupe-ce/utils/logger"
"github.com/jmoiron/sqlx"
"go.uber.org/zap"
@@ -15,7 +16,6 @@ import (
// Config struct allows configuring the server.
type Config struct {
Logger *zap.Logger
DB *sqlx.DB
ErupeConfig *_config.Config
}
@@ -23,7 +23,7 @@ type Config struct {
// Server is a MHF sign server.
type Server struct {
sync.Mutex
logger *zap.Logger
logger logger.Logger
erupeConfig *_config.Config
sessions map[int]*Session
db *sqlx.DB
@@ -34,7 +34,7 @@ type Server struct {
// NewServer creates a new Server type.
func NewServer(config *Config) *Server {
s := &Server{
logger: config.Logger,
logger: logger.Get().Named("sign"),
erupeConfig: config.ErupeConfig,
db: config.DB,
}