添加自动文件压缩的实现

This commit is contained in:
yun
2026-09-13 21:53:37 +08:00
parent ab11fa71a0
commit 316c6420a7
21 changed files with 2037 additions and 66 deletions
+72
View File
@@ -0,0 +1,72 @@
package loggerx_test
import (
"context"
"fmt"
"os"
"path/filepath"
"strings"
"testing"
"github.com/yuninks/loggerx"
)
// 异步模式下 Channel + error 组合是否落盘
func TestAsyncChannelErrorWrites(t *testing.T) {
dir := t.TempDir()
l := loggerx.NewLogger(context.Background(),
loggerx.SetDir(dir),
loggerx.SetWriteAsync(),
loggerx.SetSizeSplit(6*1024),
)
for i := 0; i < 10; i++ {
l.Info(context.Background(), "main")
l.Channel("sub").Errorf(context.Background(), "ERR-%d", i)
l.Channel("sub").Infof(context.Background(), "SUBINFO-%d", i)
l.Errorf(context.Background(), "MAINERR-%d", i)
}
if err := l.Close(); err != nil {
t.Fatalf("Close: %v", err)
}
_ = filepath.Walk(dir, func(p string, info os.FileInfo, err error) error {
if err != nil {
return nil
}
rel, _ := filepath.Rel(dir, p)
if info.IsDir() {
t.Logf(" [dir] %s", rel)
} else {
t.Logf(" [file] %s %d", rel, info.Size())
}
return nil
})
// sub channel 的日志必须落在 sub 子目录,不能混进根目录
all := readAllLogs(t, dir)
if n := countOf(all, "SUBINFO"); n != 0 {
t.Errorf("根目录日志里混入了 %d 条 sub channel 的 info 日志", n)
}
if _, err := os.Stat(filepath.Join(dir, "sub")); err != nil {
t.Fatalf("channel 目录不存在: %v", err)
}
sub := readAllIn(t, dir, "sub")
for i := 0; i < 10; i++ {
if !strings.Contains(sub, fmt.Sprintf("ERR-%d", i)) {
t.Errorf("sub channel 丢失 error 日志 ERR-%d", i)
}
if !strings.Contains(sub, fmt.Sprintf("SUBINFO-%d", i)) {
t.Errorf("sub channel 丢失 info 日志 SUBINFO-%d", i)
}
}
}
func countOf(s, sub string) int {
n := 0
for i := 0; i+len(sub) <= len(s); i++ {
if s[i:i+len(sub)] == sub {
n++
}
}
return n
}