improve systemd or docker detection
This commit is contained in:
@@ -79,3 +79,12 @@ func GetDefaultConfig() string {
|
||||
func GetEnvApi() string {
|
||||
return os.Getenv("SINGBOX_API")
|
||||
}
|
||||
|
||||
func IsSystemd() bool {
|
||||
pid := os.Getppid()
|
||||
cmdline, err := os.ReadFile(fmt.Sprintf("/proc/%d/comm", pid))
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return string(cmdline) == "systemd\n"
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package logger
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"s-ui/config"
|
||||
"time"
|
||||
|
||||
"github.com/op/go-logging"
|
||||
@@ -22,14 +23,13 @@ func InitLogger(level logging.Level) {
|
||||
var err error
|
||||
var backend logging.Backend
|
||||
var format logging.Formatter
|
||||
ppid := os.Getppid()
|
||||
|
||||
backend, err = logging.NewSyslogBackend("")
|
||||
if err != nil {
|
||||
println("Unable to use syslog: " + err.Error())
|
||||
backend = logging.NewLogBackend(os.Stderr, "", 0)
|
||||
}
|
||||
if ppid > 1 && err != nil {
|
||||
if config.IsSystemd() && err != nil {
|
||||
format = logging.MustStringFormatter(`%{time:2006/01/02 15:04:05} %{level} - %{message}`)
|
||||
} else {
|
||||
format = logging.MustStringFormatter(`%{level} - %{message}`)
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
|
||||
var ApiAddr string
|
||||
var LastUpdate int64
|
||||
var IsSystemd bool
|
||||
|
||||
type ConfigService struct {
|
||||
ClientService
|
||||
@@ -38,6 +39,7 @@ func NewConfigService() *ConfigService {
|
||||
}
|
||||
|
||||
func (s *ConfigService) InitConfig() error {
|
||||
IsSystemd = config.IsSystemd()
|
||||
configPath := config.GetBinFolderPath()
|
||||
data, err := os.ReadFile(configPath + "/config.json")
|
||||
if err != nil {
|
||||
|
||||
@@ -145,10 +145,9 @@ func (s *ServerService) GetLogs(service string, count string, level string) []st
|
||||
if service == "s-ui" {
|
||||
return logger.GetLogs(c, level)
|
||||
}
|
||||
ppid := os.Getppid()
|
||||
var lines []string
|
||||
var cmdArgs []string
|
||||
if ppid > 1 {
|
||||
if IsSystemd {
|
||||
cmdArgs = []string{"journalctl", "-u", service, "--no-pager", "-n", count, "-p", level}
|
||||
} else {
|
||||
cmdArgs = []string{"tail", "/logs/" + service + ".log", "-n", count}
|
||||
|
||||
Reference in New Issue
Block a user