添加自动文件压缩的实现
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user