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