feat(main): add -diagnose flag to control tsnet debug log

This commit is contained in:
nullcat
2026-05-25 00:04:49 +08:00
parent d12ad615cf
commit 7e8d005f58
2 changed files with 15 additions and 8 deletions
+10 -4
View File
@@ -10,14 +10,20 @@ import (
"tailscale.com/tsnet" "tailscale.com/tsnet"
) )
func InitTsNet(ctx context.Context, cfg *Core, logger *slog.Logger) (*tsnet.Server, error) { func InitTsNet(ctx context.Context, cfg *Core, logger *slog.Logger, withDebugLog bool) (*tsnet.Server, error) {
dbgLogger := func(fmt string, args ...interface{}) {}
if withDebugLog {
logger.Warn("Tsnet debug log activated")
dbgLogger = func(fmt string, args ...interface{}) {
logger.With(slog.String("from", "tsnet")).Debug(fmt2.Sprintf(fmt, args...))
}
}
srv := &tsnet.Server{ srv := &tsnet.Server{
Hostname: "tslink-" + cfg.Hostname, Hostname: "tslink-" + cfg.Hostname,
AuthKey: cfg.AuthKey, AuthKey: cfg.AuthKey,
Ephemeral: cfg.Ephemeral, Ephemeral: cfg.Ephemeral,
Logf: func(fmt string, args ...interface{}) { Logf: dbgLogger,
logger.With(slog.String("from", "tsnet")).Debug(fmt2.Sprintf(fmt, args...))
},
UserLogf: func(fmt string, args ...interface{}) { UserLogf: func(fmt string, args ...interface{}) {
logger.With(slog.String("from", "tsnet")).Info(fmt2.Sprintf(fmt, args...)) logger.With(slog.String("from", "tsnet")).Info(fmt2.Sprintf(fmt, args...))
}, },
+5 -4
View File
@@ -11,7 +11,7 @@ import (
"tslink/core" "tslink/core"
) )
func serviceLogic(configPath string, logger *slog.Logger) bool { func serviceLogic(configPath string, isTsnetDebug bool, logger *slog.Logger) bool {
cfg, err := core.LoadConfig(configPath) cfg, err := core.LoadConfig(configPath)
if err != nil { if err != nil {
logger.With( logger.With(
@@ -22,7 +22,7 @@ func serviceLogic(configPath string, logger *slog.Logger) bool {
ctx, cancelAll := context.WithCancel(context.Background()) ctx, cancelAll := context.WithCancel(context.Background())
logger.Info("initializing tsnet server") logger.Info("initializing tsnet server")
srv, err := core.InitTsNet(ctx, &cfg.Core, logger) srv, err := core.InitTsNet(ctx, &cfg.Core, logger, isTsnetDebug)
if err != nil { if err != nil {
logger.With( logger.With(
slog.String("error", err.Error())).Error("Error initializing tsnet") slog.String("error", err.Error())).Error("Error initializing tsnet")
@@ -45,7 +45,7 @@ func serviceLogic(configPath string, logger *slog.Logger) bool {
go func() { go func() {
<-ctx.Done() <-ctx.Done()
logger.Debug("stopping tsnet service") logger.Debug("stopping tsnet service")
srv.Close() _ = srv.Close() // just ignore it
}() }()
for { for {
@@ -66,6 +66,7 @@ func serviceLogic(configPath string, logger *slog.Logger) bool {
func main() { func main() {
useJsonFormatLogger := flag.Bool("json-format", false, "use json format logger") useJsonFormatLogger := flag.Bool("json-format", false, "use json format logger")
showTsnetDebugLog := flag.Bool("diagnose", false, "show tsnet debug log on level=debug")
logLevel := flag.String("level", "info", "log level (DEBUG|INFO|WARN|ERROR)") logLevel := flag.String("level", "info", "log level (DEBUG|INFO|WARN|ERROR)")
configPath := flag.String("c", "config.toml", "path to config file") configPath := flag.String("c", "config.toml", "path to config file")
flag.Parse() flag.Parse()
@@ -75,7 +76,7 @@ func main() {
logger.Info("Starting tslink server", "level", *logLevel, "configPath", *configPath) logger.Info("Starting tslink server", "level", *logLevel, "configPath", *configPath)
for { for {
isStopped := serviceLogic(*configPath, logger) isStopped := serviceLogic(*configPath, *showTsnetDebugLog, logger)
if !isStopped { if !isStopped {
logger.Warn("tslink server restart") logger.Warn("tslink server restart")
} else { } else {