From 1631ac0c3051d9aab3f3a598b03f7541c2df393d Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Thu, 18 Jul 2024 23:12:31 +0200 Subject: [PATCH] fix container logger #176 --- backend/logger/logger.go | 22 ++++++++++------------ backend/service/server.go | 34 ++++++++++++++++++++-------------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/backend/logger/logger.go b/backend/logger/logger.go index 11948aa..66791a0 100644 --- a/backend/logger/logger.go +++ b/backend/logger/logger.go @@ -8,16 +8,14 @@ import ( "github.com/op/go-logging" ) -var logger *logging.Logger -var logBuffer []struct { - time string - level logging.Level - log string -} - -func init() { - InitLogger(logging.INFO) -} +var ( + logger *logging.Logger + logBuffer []struct { + time string + level logging.Level + log string + } +) func InitLogger(level logging.Level) { newLogger := logging.MustGetLogger("s-ui") @@ -28,10 +26,10 @@ func InitLogger(level logging.Level) { backend, err = logging.NewSyslogBackend("") if err != nil { - println(err) + println("Unable to use syslog: " + err.Error()) backend = logging.NewLogBackend(os.Stderr, "", 0) } - if ppid > 0 && err != nil { + if ppid > 1 && err != nil { format = logging.MustStringFormatter(`%{time:2006/01/02 15:04:05} %{level} - %{message}`) } else { format = logging.MustStringFormatter(`%{level} - %{message}`) diff --git a/backend/service/server.go b/backend/service/server.go index c81b273..e59c4e2 100644 --- a/backend/service/server.go +++ b/backend/service/server.go @@ -141,21 +141,27 @@ func (s *ServerService) GetSystemInfo() map[string]interface{} { func (s *ServerService) GetLogs(service string, count string, level string) []string { c, _ := strconv.Atoi(count) - var lines []string - if service == "sing-box" { - cmdArgs := []string{"journalctl", "-u", service, "--no-pager", "-n", count, "-p", level} - // Run the command - cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...) - var out bytes.Buffer - cmd.Stdout = &out - err := cmd.Run() - if err != nil { - return []string{"Failed to run journalctl command!"} - } - lines = strings.Split(out.String(), "\n") - } else { - lines = logger.GetLogs(c, level) + + if service == "s-ui" { + return logger.GetLogs(c, level) } + ppid := os.Getppid() + var lines []string + var cmdArgs []string + if ppid > 1 { + cmdArgs = []string{"journalctl", "-u", service, "--no-pager", "-n", count, "-p", level} + } else { + cmdArgs = []string{"tail", "/logs/" + service + ".log", "-n", count} + } + // Run the command + cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...) + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + return []string{"Failed to get logs!", err.Error()} + } + lines = strings.Split(out.String(), "\n") return lines }