feat: persistent container log collection, unified rotation, logs page redesign

- log_manager: add collect_container_logs (appends docker logs to container_<name>.log),
  get_container_log_lines, rotate_container_log, get_all_log_file_infos
- app.py: new endpoints /api/logs/files (all log file sizes), /api/logs/containers/<name>
  (collect+return stored container logs); rotate endpoint now handles both service and container logs
- Logs page: split into API Service Logs tab (python manager logs) and Container Logs tab
  (persistent docker stdout/stderr); Statistics tab shows both kinds with per-row rotate;
  each tab has a description explaining what it shows and where files live
- wireguard_manager: test_connectivity peer_ip=None guard (already in previous commit, now rebuilt)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-21 01:54:33 -04:00
parent 50f2200b45
commit 7b39331417
4 changed files with 308 additions and 231 deletions
+4 -1
View File
@@ -194,7 +194,10 @@ export const logsAPI = {
exportLogs: (data) => api.post('/api/logs/export', data),
getStatistics: (service) =>
api.get('/api/logs/statistics', service ? { params: { service } } : {}),
rotateLogs: (service) => api.post('/api/logs/rotate', service ? { service } : {}),
rotateLogs: (name, kind = 'service') => api.post('/api/logs/rotate', { name, kind }),
getLogFiles: () => api.get('/api/logs/files'),
getStoredContainerLogs: (containerName, tail = 100) =>
api.get(`/api/logs/containers/${containerName}`, { params: { tail } }),
};
// Container Management API