move config & logging packages into internal submodules
This commit is contained in:
parent
e525b7ff3b
commit
450d425b04
5 changed files with 62 additions and 38 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
package main
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
@ -6,8 +6,6 @@ import (
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
var appConfig *AppConfig
|
|
||||||
|
|
||||||
type AppConfig struct {
|
type AppConfig struct {
|
||||||
LogFile string `yaml:"log_file"`
|
LogFile string `yaml:"log_file"`
|
||||||
LogDir string `yaml:"log_dir"`
|
LogDir string `yaml:"log_dir"`
|
||||||
|
|
@ -18,7 +16,9 @@ type AppConfig struct {
|
||||||
LogAddSource bool `yaml:"log_add_source"`
|
LogAddSource bool `yaml:"log_add_source"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseConfigs() error {
|
func Parse() (*AppConfig, error) {
|
||||||
|
var appConfig *AppConfig
|
||||||
|
|
||||||
setDefaults()
|
setDefaults()
|
||||||
|
|
||||||
// automatically populate config with any matching environment vars
|
// automatically populate config with any matching environment vars
|
||||||
|
|
@ -31,15 +31,15 @@ func parseConfigs() error {
|
||||||
|
|
||||||
err := viper.ReadInConfig()
|
err := viper.ReadInConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error reading configs: %s", err)
|
return nil, fmt.Errorf("error reading configs: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = viper.Unmarshal(&appConfig)
|
err = viper.Unmarshal(&appConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error unmarshaling configs: %s", err)
|
return nil, fmt.Errorf("error unmarshaling configs: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return appConfig, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func setDefaults() {
|
func setDefaults() {
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package main
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
@ -17,6 +17,8 @@ log_max_backups: 3
|
||||||
log_max_age_days: 365
|
log_max_age_days: 365
|
||||||
log_compression: false
|
log_compression: false
|
||||||
`
|
`
|
||||||
|
// the config file is stored in the project root
|
||||||
|
viper.AddConfigPath("../..")
|
||||||
}
|
}
|
||||||
|
|
||||||
// test that default configs are working
|
// test that default configs are working
|
||||||
|
|
@ -26,7 +28,7 @@ func TestDefaultConfigs(t *testing.T) {
|
||||||
|
|
||||||
viper.SetDefault(k, v)
|
viper.SetDefault(k, v)
|
||||||
|
|
||||||
err := parseConfigs()
|
_, err := Parse()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
42
internal/logging/logging.go
Normal file
42
internal/logging/logging.go
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
package logging
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log/slog"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
|
"gitlab.com/whom/bingobot/internal/config"
|
||||||
|
"gopkg.in/natefinch/lumberjack.v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Logger struct {
|
||||||
|
*slog.Logger
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
logger Logger
|
||||||
|
)
|
||||||
|
|
||||||
|
func InitLogger(appConfig *config.AppConfig) Logger {
|
||||||
|
|
||||||
|
lj := &lumberjack.Logger{
|
||||||
|
Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile),
|
||||||
|
MaxSize: appConfig.LogMaxSizeMB,
|
||||||
|
MaxBackups: appConfig.LogMaxBackups,
|
||||||
|
MaxAge: appConfig.LogMaxAgeDays,
|
||||||
|
Compress: appConfig.LogCompression,
|
||||||
|
}
|
||||||
|
|
||||||
|
logger = Logger{
|
||||||
|
slog.New(
|
||||||
|
slog.NewJSONHandler(lj, &slog.HandlerOptions{
|
||||||
|
AddSource: appConfig.LogAddSource,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
return logger
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetLogger() Logger {
|
||||||
|
return logger
|
||||||
|
}
|
||||||
27
log.go
27
log.go
|
|
@ -1,27 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"log/slog"
|
|
||||||
"path/filepath"
|
|
||||||
|
|
||||||
"gopkg.in/natefinch/lumberjack.v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
Log *slog.Logger
|
|
||||||
)
|
|
||||||
|
|
||||||
func initLogger() {
|
|
||||||
|
|
||||||
lj := &lumberjack.Logger{
|
|
||||||
Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile),
|
|
||||||
MaxSize: appConfig.LogMaxSizeMB,
|
|
||||||
MaxBackups: appConfig.LogMaxBackups,
|
|
||||||
MaxAge: appConfig.LogMaxAgeDays,
|
|
||||||
Compress: appConfig.LogCompression,
|
|
||||||
}
|
|
||||||
|
|
||||||
Log = slog.New(slog.NewJSONHandler(lj, &slog.HandlerOptions{
|
|
||||||
AddSource: true,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
11
main.go
11
main.go
|
|
@ -7,12 +7,17 @@ import (
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
|
"gitlab.com/whom/bingobot/internal/config"
|
||||||
|
"gitlab.com/whom/bingobot/internal/logging"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
Token = flag.String("token", "", "Bot authentication token")
|
Token = flag.String("token", "", "Bot authentication token")
|
||||||
App = flag.String("app", "", "Application ID")
|
App = flag.String("app", "", "Application ID")
|
||||||
Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server?
|
Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server?
|
||||||
|
|
||||||
|
appConfig *config.AppConfig
|
||||||
|
Log logging.Logger
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
@ -21,13 +26,15 @@ func main() {
|
||||||
log.Fatal("application id is not set")
|
log.Fatal("application id is not set")
|
||||||
}
|
}
|
||||||
|
|
||||||
err := parseConfigs()
|
var err error
|
||||||
|
|
||||||
|
appConfig, err = config.Parse()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
initLogger()
|
Log = logging.InitLogger(appConfig)
|
||||||
|
|
||||||
err = startBot()
|
err = startBot()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue