Добавить тесты репозитория файловой системы и реализовать функциональность журналирования файлов.
- Реализовать тесты для поиска MP3-файлов и переименования/организации папок книг в репозитории файловой системы. - Создать FileLogger для записи сообщений в файл с поддержкой различных уровней журналирования и управления размером файлов. - Разработать репозиторий RuTracker для обработки поиска торрентов, получения метаданных и загрузки торрент-файлов. - Добавить тесты для нормализации URL в репозиторий RuTracker. - Реализовать адаптер логгера TUI для отображения логов в терминальном интерфейсе и, при необходимости, для записи логов в базовый логгер. - Создать менеджер TUI для управления пользовательским интерфейсом приложения, включая главное меню, экран обработки, настройки и отображение результатов.
This commit is contained in:
57
internal/presentation/tui/logger_adapter.go
Normal file
57
internal/presentation/tui/logger_adapter.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package tui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"audio-catalyst/internal/domain/repositories"
|
||||
)
|
||||
|
||||
// UILogger адаптер, который дублирует логи в TUI и (опционально) в базовый логгер
|
||||
type UILogger struct {
|
||||
base repositories.Logger // может быть nil (тогда лог только в TUI)
|
||||
mgr *Manager
|
||||
}
|
||||
|
||||
func NewUILogger(base repositories.Logger, mgr *Manager) *UILogger {
|
||||
return &UILogger{base: base, mgr: mgr}
|
||||
}
|
||||
|
||||
func (l *UILogger) Info(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
if l.base != nil {
|
||||
l.base.Info("%s", msg)
|
||||
}
|
||||
l.mgr.SendLogUpdate("[white]" + msg)
|
||||
}
|
||||
|
||||
func (l *UILogger) Debug(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
if l.base != nil {
|
||||
l.base.Debug("%s", msg)
|
||||
}
|
||||
l.mgr.SendLogUpdate("[gray]" + msg)
|
||||
}
|
||||
|
||||
func (l *UILogger) Warning(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
if l.base != nil {
|
||||
l.base.Warning("%s", msg)
|
||||
}
|
||||
l.mgr.SendLogUpdate("[yellow]" + msg)
|
||||
}
|
||||
|
||||
func (l *UILogger) Error(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
if l.base != nil {
|
||||
l.base.Error("%s", msg)
|
||||
}
|
||||
l.mgr.SendLogUpdate("[red]" + msg)
|
||||
}
|
||||
|
||||
func (l *UILogger) Success(format string, args ...interface{}) {
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
if l.base != nil {
|
||||
l.base.Success("%s", msg)
|
||||
}
|
||||
l.mgr.SendLogUpdate("[green]" + msg)
|
||||
}
|
||||
Reference in New Issue
Block a user