@@ -51,6 +51,16 @@ func run() error {
5151 logger .Warn ("JWT_SECRET not configured - API authentication will fail" )
5252 }
5353
54+ // Validate log rotation config
55+ var logMaxSize datasize.ByteSize
56+ if err := logMaxSize .UnmarshalText ([]byte (app .Config .LogMaxSize )); err != nil {
57+ return fmt .Errorf ("invalid LOG_MAX_SIZE %q: %w" , app .Config .LogMaxSize , err )
58+ }
59+ logRotateInterval , err := time .ParseDuration (app .Config .LogRotateInterval )
60+ if err != nil {
61+ return fmt .Errorf ("invalid LOG_ROTATE_INTERVAL %q: %w" , app .Config .LogRotateInterval , err )
62+ }
63+
5464 // Ensure system files (kernel, initrd) exist before starting server
5565 logger .Info ("Ensuring system files..." )
5666 if err := app .SystemManager .EnsureSystemFiles (app .Ctx ); err != nil {
@@ -180,13 +190,7 @@ func run() error {
180190
181191 // Log rotation scheduler
182192 grp .Go (func () error {
183- var logMaxSize datasize.ByteSize
184- if err := logMaxSize .UnmarshalText ([]byte (app .Config .LogMaxSize )); err != nil {
185- logger .Error ("invalid LOG_MAX_SIZE config" , "value" , app .Config .LogMaxSize , "error" , err )
186- return nil // Don't crash server, just skip rotation
187- }
188-
189- ticker := time .NewTicker (5 * time .Minute )
193+ ticker := time .NewTicker (logRotateInterval )
190194 defer ticker .Stop ()
191195
192196 for {
0 commit comments