Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c90860e authored by root's avatar root
Browse files

Add openLogFile()/setupSIGHUPHandler() to reopen the stream log on HUP.

parent a6873816
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -9,10 +9,11 @@ import (
	"proxy-stt/app/websocket"
)

var log = logger.GetLogger()

func main() {
	logPath := "/var/log/murena/streams.log"
	if err := streamlog.Init(logPath); err != nil {
		logger.GetLogger().Fatal().Err(err).Msg("Failed to init stream logger")
	if err := streamlog.Init(); err != nil {
		log.Fatal().Err(err).Msg("Failed to init stream logger")
	}

	defer streamlog.CloseLogger()
+37 −7
Original line number Diff line number Diff line
@@ -3,24 +3,28 @@ package streamlog
import (
	"fmt"
	"os"
	"os/signal"
	"path/filepath"
	"syscall"
	"sync"
	"time"

	// External dependencies
	"github.com/rs/zerolog"
	//Internal dependencies
	"proxy-stt/app/logger"
)

const baseLog = "[streamlog]"
const logPath = "/var/log/murena/streams.log"
var streamSDID = "stream@12345"
var hostname = "murena-streamer"
var appName = "proxy-stt"
var streamlogger zerolog.Logger
var (
	logFile *os.File
	mu      sync.Mutex
)
var log = logger.GetLogger()

func Init(logPath string) error {
func Init() error {
	if v := os.Getenv("STREAM_SDID"); v != "" {
		streamSDID = v
	}
@@ -36,14 +40,40 @@ func Init(logPath string) error {
		return fmt.Errorf("cannot create log directory: %w", err)
    }

	if err := openLogFile(); err != nil {
		log.Error().Msgf("%s Fail to open log file: %v", baseLog, err)
	}

	setupSIGHUPHandler()

	return nil
}

func setupSIGHUPHandler() {
	sigs := make(chan os.Signal, 1)
	signal.Notify(sigs, syscall.SIGHUP)
	go func() {
		for range sigs {
			log.Info().Msgf("%s SIGHUP received, reopen log file", baseLog)
			if err := openLogFile(); err != nil {
				log.Error().Msgf("%s Fail to open loglog file: %v", baseLog, err)
			}
		}
	}()
}

func openLogFile() error {
	mu.Lock()
	defer mu.Unlock()
	if logFile != nil {
		logFile.Close()
	}
	f, err := os.OpenFile(logPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		return fmt.Errorf("cannot open log file: %w", err)
	}

	streamlogger = zerolog.New(f).With().Logger()
	logFile = f

	log.Debug().Msgf("Opened log file on %s", logPath)
	return nil
}