package server import ( "net/http" "os" "strings" "github.com/gin-gonic/gin" ) const maxLogLines = 20 // handleLogsTail returns the last 20 lines of the server log file as plain text. func (s *Server) handleLogsTail(c *gin.Context) { if s.Config.LogFile == "" { c.String(http.StatusOK, "KAOS_LOG_FILE nije podešen. Podesi env varijablu za prikaz logova.") return } data, err := os.ReadFile(s.Config.LogFile) if err != nil { if os.IsNotExist(err) { c.String(http.StatusOK, "Log fajl ne postoji: "+s.Config.LogFile) return } c.String(http.StatusInternalServerError, "Greška pri čitanju loga: "+err.Error()) return } lines := tailLines(string(data), maxLogLines) c.String(http.StatusOK, strings.Join(lines, "\n")) } // tailLines returns the last n non-empty lines from text. func tailLines(text string, n int) []string { allLines := strings.Split(strings.TrimRight(text, "\n"), "\n") if len(allLines) <= n { return allLines } return allLines[len(allLines)-n:] }