docs(runtime-logs): implement runtime log management features

Добавлены новые возможности для работы с файловыми логами Docker-сервисов:
- Эндпоинты для получения списка логов и хвоста лог-файла.
- Очистка лог-файлов с возможностью выбора режима (truncate или delete) и запись в аудит очистки.
- Обновлена документация и конфигурация для поддержки новых функций.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Denozordec
2026-06-12 19:04:53 +07:00
co-authored by Cursor
parent 1c39c65fc5
commit 3f0dd6c234
25 changed files with 1235 additions and 66 deletions
+51
View File
@@ -0,0 +1,51 @@
package runtimelogs
import (
"os"
"evobgp/internal/store"
)
// Cleanup truncates or deletes a runtime log file synchronously.
func (s *Service) Cleanup(filename, mode string) (sizeBefore int64, sizeAfter *int64, err error) {
if !s.Available() {
return 0, nil, ErrUnavailable
}
if !store.ValidRuntimeLogCleanupAction(mode) {
return 0, nil, ErrInvalidFilename
}
path, err := ResolveLogPath(s.cfg.RootDir, filename)
if err != nil {
return 0, nil, err
}
st, err := os.Stat(path)
if err != nil {
if os.IsNotExist(err) {
return 0, nil, ErrNotFound
}
return 0, nil, err
}
if st.IsDir() {
return 0, nil, ErrNotAFile
}
sizeBefore = st.Size()
if sizeBefore > MaxCleanupBytes {
return 0, nil, ErrFileTooLarge
}
switch mode {
case store.RuntimeLogCleanupTruncate:
if err := os.Truncate(path, 0); err != nil {
return 0, nil, err
}
zero := int64(0)
return sizeBefore, &zero, nil
case store.RuntimeLogCleanupDelete:
if err := os.Remove(path); err != nil {
return 0, nil, err
}
return sizeBefore, nil, nil
default:
return 0, nil, ErrInvalidFilename
}
}