mirror of
https://github.com/wneessen/logranger.git
synced 2024-10-06 00:55:57 +02:00
72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"log/slog"
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
"path/filepath"
|
||
|
"syscall"
|
||
|
|
||
|
"github.com/wneessen/logranger"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
// LogErrKey is the keyword used in slog for error messages
|
||
|
LogErrKey = "error"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
l := slog.New(slog.NewJSONHandler(os.Stdout, nil)).With(slog.String("context", "logranger"))
|
||
|
cp := "logranger.toml"
|
||
|
cpe := os.Getenv("LOGRANGER_CONFIG")
|
||
|
if cpe != "" {
|
||
|
cp = cpe
|
||
|
}
|
||
|
|
||
|
p := filepath.Dir(cp)
|
||
|
f := filepath.Base(cp)
|
||
|
c, err := logranger.NewConfig(p, f)
|
||
|
if err != nil {
|
||
|
l.Error("failed to read/parse config", LogErrKey, err)
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
|
||
|
s := logranger.New(c)
|
||
|
go func() {
|
||
|
if err = s.Run(); err != nil {
|
||
|
l.Error("failed to start logranger: %s", LogErrKey, err)
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
sc := make(chan os.Signal, 1)
|
||
|
signal.Notify(sc)
|
||
|
for {
|
||
|
select {
|
||
|
case rc := <-sc:
|
||
|
if rc == syscall.SIGKILL || rc == syscall.SIGABRT || rc == syscall.SIGINT || rc == syscall.SIGTERM {
|
||
|
l.Warn("received signal. shutting down server", slog.String("signal", rc.String()))
|
||
|
//s.Stop()
|
||
|
l.Info("server gracefully shut down")
|
||
|
os.Exit(0)
|
||
|
}
|
||
|
if rc == syscall.SIGHUP {
|
||
|
l.Info(`received "SIGHUP" signal - reloading rules...`)
|
||
|
/*
|
||
|
_, nr, err := config.New(config.WithConfFile(*cf), config.WithRulesFile(*rf))
|
||
|
if err != nil {
|
||
|
s.Log.Errorf("%s - skipping reload", err)
|
||
|
continue
|
||
|
}
|
||
|
if err := nr.CheckRegEx(); err != nil {
|
||
|
s.Log.Errorf("ruleset validation failed for new ruleset - skipping reload: %s", err)
|
||
|
continue
|
||
|
}
|
||
|
s.SetRules(nr)
|
||
|
|
||
|
*/
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|