Files
WeKnora/internal/runtime/server.go
T
wizardchen 226a37330c feat(system): add server startup time and uptime tracking
- Introduced `started_at` and `uptime_seconds` fields to the `SystemInfo` structure for tracking server boot time and uptime.
- Updated the `GetSystemInfo` handler to populate these new fields based on server runtime.
- Enhanced the frontend to display server startup time and uptime in the system information view, improving visibility for users.
- Added localization support for new labels and descriptions related to server uptime and startup time in multiple languages.
2026-06-04 15:48:04 +08:00

28 lines
826 B
Go

package runtime
import "time"
// serverStartedAt is set once at process boot (see MarkServerStarted).
var serverStartedAt time.Time
// MarkServerStarted records the instant the WeKnora server process started.
// Call once from main() before heavy init so uptime reflects the full process
// lifetime, not merely when the HTTP listener binds.
func MarkServerStarted() {
serverStartedAt = time.Now().UTC()
}
// ServerStartedAt returns the boot instant in UTC. Zero when MarkServerStarted
// was not called (e.g. some tests); callers should treat zero as unknown.
func ServerStartedAt() time.Time {
return serverStartedAt
}
// ServerUptime returns elapsed time since MarkServerStarted. Zero when unset.
func ServerUptime() time.Duration {
if serverStartedAt.IsZero() {
return 0
}
return time.Since(serverStartedAt)
}