mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-05-07 06:03:00 +08:00
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package backup
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"sync"
|
|
)
|
|
|
|
type ExecutionLogger struct {
|
|
recordID uint
|
|
hub *LogHub
|
|
mu sync.Mutex
|
|
buffer strings.Builder
|
|
}
|
|
|
|
func NewExecutionLogger(recordID uint, hub *LogHub) *ExecutionLogger {
|
|
return &ExecutionLogger{recordID: recordID, hub: hub}
|
|
}
|
|
|
|
func (l *ExecutionLogger) Write(level, message string) {
|
|
trimmed := strings.TrimSpace(message)
|
|
if trimmed == "" {
|
|
return
|
|
}
|
|
l.mu.Lock()
|
|
defer l.mu.Unlock()
|
|
if l.buffer.Len() > 0 {
|
|
l.buffer.WriteByte('\n')
|
|
}
|
|
l.buffer.WriteString(trimmed)
|
|
if l.hub != nil {
|
|
l.hub.Append(l.recordID, level, trimmed)
|
|
}
|
|
}
|
|
|
|
func (l *ExecutionLogger) Infof(format string, args ...any) {
|
|
l.Write("info", fmt.Sprintf(format, args...))
|
|
}
|
|
|
|
func (l *ExecutionLogger) Errorf(format string, args ...any) {
|
|
l.Write("error", fmt.Sprintf(format, args...))
|
|
}
|
|
|
|
func (l *ExecutionLogger) Warnf(format string, args ...any) {
|
|
l.Write("warn", fmt.Sprintf(format, args...))
|
|
}
|
|
|
|
func (l *ExecutionLogger) WriteLine(message string) {
|
|
l.Infof("%s", message)
|
|
}
|
|
|
|
func (l *ExecutionLogger) String() string {
|
|
l.mu.Lock()
|
|
defer l.mu.Unlock()
|
|
return l.buffer.String()
|
|
}
|