add check for gateway port and fix logger.Fatal not record issue (#2185)
This commit is contained in:
parent
cbe92286e9
commit
7a1f2aba03
2 changed files with 46 additions and 28 deletions
|
|
@ -91,13 +91,17 @@ func Run(debug bool, homePath, configPath string, allowEmptyStartup bool) error
|
||||||
defer panicFunc()
|
defer panicFunc()
|
||||||
|
|
||||||
if err = logger.EnableFileLogging(filepath.Join(homePath, logPath, logFile)); err != nil {
|
if err = logger.EnableFileLogging(filepath.Join(homePath, logPath, logFile)); err != nil {
|
||||||
panic(fmt.Sprintf("error enabling file logging: %v", err))
|
logger.Fatal(fmt.Sprintf("error enabling file logging: %v", err))
|
||||||
}
|
}
|
||||||
defer logger.DisableFileLogging()
|
defer logger.DisableFileLogging()
|
||||||
|
|
||||||
cfg, err := config.LoadConfig(configPath)
|
cfg, err := config.LoadConfig(configPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error loading config: %w", err)
|
logger.Fatalf("error loading config: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = preCheckConfig(cfg); err != nil {
|
||||||
|
logger.Fatalf("config pre-check failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.SetLevelFromString(cfg.Gateway.LogLevel)
|
logger.SetLevelFromString(cfg.Gateway.LogLevel)
|
||||||
|
|
@ -214,6 +218,13 @@ func Run(debug bool, homePath, configPath string, allowEmptyStartup bool) error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func preCheckConfig(cfg *config.Config) error {
|
||||||
|
if cfg.Gateway.Port <= 0 || cfg.Gateway.Port > 65535 {
|
||||||
|
return fmt.Errorf("invalid gateway port: %d, port must be between 1 and 65535", cfg.Gateway.Port)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func executeReload(
|
func executeReload(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
agentLoop *agent.AgentLoop,
|
agentLoop *agent.AgentLoop,
|
||||||
|
|
|
||||||
|
|
@ -35,12 +35,13 @@ var (
|
||||||
FATAL: "FATAL",
|
FATAL: "FATAL",
|
||||||
}
|
}
|
||||||
|
|
||||||
currentLevel = INFO
|
currentLevel = INFO
|
||||||
logger zerolog.Logger
|
logger zerolog.Logger
|
||||||
fileLogger zerolog.Logger
|
logFile *os.File
|
||||||
logFile *os.File
|
once sync.Once
|
||||||
once sync.Once
|
mu sync.RWMutex
|
||||||
mu sync.RWMutex
|
writers []io.Writer
|
||||||
|
consoleWriter zerolog.ConsoleWriter
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
@ -49,7 +50,7 @@ func init() {
|
||||||
|
|
||||||
isTTY := term.IsTerminal(int(os.Stdout.Fd()))
|
isTTY := term.IsTerminal(int(os.Stdout.Fd()))
|
||||||
|
|
||||||
consoleWriter := zerolog.ConsoleWriter{
|
consoleWriter = zerolog.ConsoleWriter{
|
||||||
Out: os.Stdout,
|
Out: os.Stdout,
|
||||||
TimeFormat: "15:04:05", // TODO: make it configurable???
|
TimeFormat: "15:04:05", // TODO: make it configurable???
|
||||||
|
|
||||||
|
|
@ -72,8 +73,9 @@ func init() {
|
||||||
NoColor: !isTTY,
|
NoColor: !isTTY,
|
||||||
}
|
}
|
||||||
|
|
||||||
logger = zerolog.New(consoleWriter).With().Timestamp().Caller().Logger()
|
writers = append(writers, consoleWriter)
|
||||||
fileLogger = zerolog.Logger{}
|
|
||||||
|
logger = zerolog.New(io.MultiWriter(writers...)).With().Timestamp().Caller().Logger()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -124,7 +126,15 @@ func SetConsoleLevel(level LogLevel) {
|
||||||
func DisableConsole() {
|
func DisableConsole() {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
logger = zerolog.New(io.Discard).With().Timestamp().Caller().Logger()
|
writers[0] = io.Discard
|
||||||
|
logger = logger.Output(io.MultiWriter(writers...))
|
||||||
|
}
|
||||||
|
|
||||||
|
func EnableConsole() {
|
||||||
|
mu.Lock()
|
||||||
|
defer mu.Unlock()
|
||||||
|
writers[0] = consoleWriter
|
||||||
|
logger = logger.Output(io.MultiWriter(writers...))
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetLevel() LogLevel {
|
func GetLevel() LogLevel {
|
||||||
|
|
@ -182,7 +192,14 @@ func EnableFileLogging(filePath string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
logFile = newFile
|
logFile = newFile
|
||||||
fileLogger = zerolog.New(logFile).With().Timestamp().Caller().Logger()
|
|
||||||
|
if len(writers) != 1 {
|
||||||
|
return fmt.Errorf("failed to configure file logging: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
writers = append(writers, logFile)
|
||||||
|
logger = logger.Output(io.MultiWriter(writers...))
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,7 +211,10 @@ func DisableFileLogging() {
|
||||||
logFile.Close()
|
logFile.Close()
|
||||||
logFile = nil
|
logFile = nil
|
||||||
}
|
}
|
||||||
fileLogger = zerolog.Logger{}
|
if len(writers) > 1 {
|
||||||
|
writers = writers[:1]
|
||||||
|
logger = logger.Output(io.MultiWriter(writers...))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ConfigureFromEnv() {
|
func ConfigureFromEnv() {
|
||||||
|
|
@ -298,21 +318,8 @@ func logMessage(level LogLevel, component string, message string, fields map[str
|
||||||
event.Str(Component, component)
|
event.Str(Component, component)
|
||||||
|
|
||||||
appendFields(event, fields)
|
appendFields(event, fields)
|
||||||
|
|
||||||
event.CallerSkipFrame(skip).Msg(message)
|
event.CallerSkipFrame(skip).Msg(message)
|
||||||
|
|
||||||
// Also log to file if enabled
|
|
||||||
if fileLogger.GetLevel() != zerolog.NoLevel {
|
|
||||||
fileEvent := getEvent(fileLogger, level)
|
|
||||||
|
|
||||||
fileEvent.Str(Component, component)
|
|
||||||
|
|
||||||
appendFields(fileEvent, fields)
|
|
||||||
fileEvent.CallerSkipFrame(skip).Msg(message)
|
|
||||||
}
|
|
||||||
|
|
||||||
if level == FATAL {
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func appendFields(event *zerolog.Event, fields map[string]any) {
|
func appendFields(event *zerolog.Event, fields map[string]any) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue