|
@@ -1,8 +1,11 @@
|
|
package log
|
|
package log
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "fmt"
|
|
"os"
|
|
"os"
|
|
"path/filepath"
|
|
"path/filepath"
|
|
|
|
+ "regexp"
|
|
|
|
+ "strings"
|
|
"sync"
|
|
"sync"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
@@ -93,9 +96,26 @@ func (r *DateRotator) rotate(newDate string) error {
|
|
// 更新日期
|
|
// 更新日期
|
|
r.currentDate = newDate
|
|
r.currentDate = newDate
|
|
|
|
|
|
- // 直接使用传入的文件名,不再对文件名进行附加日期的处理
|
|
|
|
- // 因为在log.go中已经对文件名进行了日期格式化
|
|
|
|
- filename := r.Filename
|
|
|
|
|
|
+ // 根据文件名格式更新日期部分
|
|
|
|
+ var filename string
|
|
|
|
+ if strings.Contains(r.Filename, "%s") {
|
|
|
|
+ // 如果文件名中有格式化占位符,直接使用新日期替换
|
|
|
|
+ filename = fmt.Sprintf(r.Filename, newDate)
|
|
|
|
+ } else {
|
|
|
|
+ // 如果没有占位符,则检查文件名是否已经包含日期格式
|
|
|
|
+ ext := filepath.Ext(r.Filename)
|
|
|
|
+ base := r.Filename[:len(r.Filename)-len(ext)]
|
|
|
|
+
|
|
|
|
+ // 如果文件名中已经有日期格式(如api-2025-05-26.log),则替换日期部分
|
|
|
|
+ datePattern := regexp.MustCompile(`-\d{4}-\d{2}-\d{2}`)
|
|
|
|
+ if datePattern.MatchString(base) {
|
|
|
|
+ base = datePattern.ReplaceAllString(base, "-"+newDate)
|
|
|
|
+ filename = base + ext
|
|
|
|
+ } else {
|
|
|
|
+ // 否则在扩展名前添加日期
|
|
|
|
+ filename = base + "-" + newDate + ext
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
// 确保目录存在
|
|
// 确保目录存在
|
|
dir := filepath.Dir(filename)
|
|
dir := filepath.Dir(filename)
|