mirror of
https://github.com/SunBK201/UA3F.git
synced 2025-12-16 16:57:08 +00:00
feat: add os info logging
This commit is contained in:
parent
df5c4d9efe
commit
422765cf95
@ -9,6 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/sunbk201/ua3f/internal/config"
|
||||
"golang.org/x/sys/unix"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
@ -58,7 +59,7 @@ func SetLogConf(level string) {
|
||||
|
||||
func LogHeader(version string, cfg *config.Config) {
|
||||
slog.Info("UA3F started", "version", version, "", cfg)
|
||||
slog.Info("System Info", slog.String("Go Version", strings.TrimPrefix(strings.TrimSpace(runtime.Version()), "go")), slog.String("OS/Arch", runtime.GOOS+"/"+runtime.GOARCH))
|
||||
slog.Info("OS Info", GetOSInfo()...)
|
||||
}
|
||||
|
||||
func LogDebugWithAddr(src string, dest string, msg string) {
|
||||
@ -99,6 +100,51 @@ func LoadLocalLocation() *time.Location {
|
||||
return time.UTC
|
||||
}
|
||||
|
||||
func GetOSInfo() (attrs []any) {
|
||||
|
||||
attrs = append(attrs,
|
||||
slog.String("GOOS", runtime.GOOS),
|
||||
slog.String("GOARCH", runtime.GOARCH),
|
||||
slog.String("Go Version", runtime.Version()),
|
||||
)
|
||||
|
||||
if hostname, err := os.Hostname(); err == nil {
|
||||
attrs = append(attrs, slog.String("hostname", hostname))
|
||||
}
|
||||
|
||||
switch runtime.GOOS {
|
||||
case "linux", "darwin", "freebsd", "openbsd", "netbsd":
|
||||
var uname unix.Utsname
|
||||
if err := unix.Uname(&uname); err == nil {
|
||||
toStr := func(b []byte) string {
|
||||
n := 0
|
||||
for ; n < len(b); n++ {
|
||||
if b[n] == 0 {
|
||||
break
|
||||
}
|
||||
}
|
||||
return strings.TrimSpace(string(b[:n]))
|
||||
}
|
||||
attrs = append(attrs,
|
||||
slog.String("sysname", toStr(uname.Sysname[:])),
|
||||
slog.String("nodename", toStr(uname.Nodename[:])),
|
||||
slog.String("release", toStr(uname.Release[:])),
|
||||
slog.String("version", toStr(uname.Version[:])),
|
||||
slog.String("machine", toStr(uname.Machine[:])),
|
||||
)
|
||||
}
|
||||
case "windows":
|
||||
osver := "unknown"
|
||||
if v, ok := os.LookupEnv("OS"); ok {
|
||||
osver = v
|
||||
}
|
||||
attrs = append(attrs, slog.String("os_version", osver))
|
||||
default:
|
||||
attrs = append(attrs, slog.String("info", "unknown OS details"))
|
||||
}
|
||||
return attrs
|
||||
}
|
||||
|
||||
func trim(s string) string {
|
||||
for len(s) > 0 && (s[len(s)-1] == '\n' || s[len(s)-1] == '\r' || s[len(s)-1] == ' ') {
|
||||
s = s[:len(s)-1]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user