-func newLogFileCore(path string, level zapcore.Level) zapcore.Core {
- encoderCfg := zap.NewProductionEncoderConfig()
- encoderCfg.TimeKey = "timestamp"
- encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder
- writer := zapcore.AddSync(&lumberjack.Logger{
- Filename: path,
- MaxSize: 100, // MB
- MaxBackups: 3,
- MaxAge: 365, // days
- })
-
- return zapcore.NewCore(
- zapcore.NewConsoleEncoder(encoderCfg),
- writer,
- level,
- )
-}
+ if err := srv.ThreadedNewsMgr.(*mobius.ThreadedNewsYAML).Load(); err != nil {
+ slogger.Error("Error reloading threaded news list", "err", err)
+ }
+
+ if err := srv.Agreement.(*mobius.Agreement).Reload(); err != nil {
+ slogger.Error(fmt.Sprintf("Error reloading agreement: %v", err))
+ os.Exit(1)
+ }
+ }
+
+ if *apiAddr != "" {
+ sh := mobius.NewAPIServer(srv, reloadFunc, slogger)
+ go sh.Serve(*apiAddr)
+ }
+
+ go func() {
+ for {
+ sig := <-sigChan
+ switch sig {
+ case syscall.SIGHUP:
+ slogger.Info("SIGHUP received. Reloading configuration.")
+
+ reloadFunc()
+ default:
+ signal.Stop(sigChan)
+ cancel()
+ os.Exit(0)
+ }
+
+ }
+ }()
+
+ slogger.Info("Hotline server started", "version", version, "config", *configDir)