mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-09-06 07:56:41 +08:00
first commit
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
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()
|
||||
}
|
||||
Reference in New Issue
Block a user