chore: add log size limit

This commit is contained in:
duorameng
2026-04-28 14:33:43 +08:00
parent dc9ebdbf69
commit 4b698474b3
4 changed files with 104 additions and 4 deletions
+29
View File
@@ -4,11 +4,13 @@ import (
"bufio"
"bytes"
"encoding/base64"
"fmt"
"io"
"os"
"sync"
"unicode/utf8"
"github.com/engigu/baihu-panel/internal/constant"
"github.com/engigu/baihu-panel/internal/utils"
)
@@ -236,6 +238,33 @@ func (l *TinyLog) CompressAndCleanup() (string, error) {
zw := utils.GetZlibWriter(b64Writer)
defer utils.PutZlibWriter(zw)
// 获取文件大小
stat, err := f.Stat()
if err != nil {
return "", err
}
size := stat.Size()
maxSize := int64(constant.MaxLogSize)
if maxSize < 1024*1024 {
maxSize = 1024 * 1024
}
var readStart int64 = 0
if size > maxSize {
readStart = size - maxSize
// 写入一条截断提示
truncatedMsg := fmt.Sprintf("\n\n[System] 日志过长,已自动截断,仅保留末尾 %d MB...\n\n", maxSize/1024/1024)
if _, err := zw.Write([]byte(truncatedMsg)); err != nil {
return "", err
}
}
if readStart > 0 {
if _, err := f.Seek(readStart, io.SeekStart); err != nil {
return "", err
}
}
// 流处理: 文件 -> Zlib -> Base64 -> 缓冲区
if _, err := io.Copy(zw, f); err != nil {
return "", err