publish v1.5.1

This commit is contained in:
AI Engineer 2026-06-04 18:16:15 +08:00
parent 7b3f56b01b
commit 49a1ee715b
2 changed files with 16 additions and 2 deletions

View File

@ -1,5 +1,13 @@
# Changelog
## [1.5.1] - 2026-06-04
- **缺陷修复: 异步控制台日志丢失**:
- **修复**: 在 `writerService.processLog` 中补充了默认的回退逻辑。当处于异步 `starter` 运行模式下,且日志的 `writer``file` 都为 `nil`(即未配置特定的输出目标,本应输出到控制台)时,不再静默丢弃该日志,而是默认回退调用 `fmt.Println` 并在控制台打印渲染后的视图。
## [1.5.0] - 2026-05-10
- **全栈基础设施对齐**:
- 将所有内部依赖统一升级至 `v1.5.0` 语义版本。
## [1.3.2] - 2026-05-13
- **功能增强: 引入摩擦消除工具 `As`**:
- **泛型支持**: 新增全局泛型函数 `log.As[T](v T, err error) T`,仿照 `cast.As` 设计,自动记录错误并返回零值,极大简化了带 error 返回值的函数链式调用。

View File

@ -25,7 +25,7 @@ type logPayload struct {
// writerService manages the background writing of log entries.
type writerService struct {
Running atomic.Bool
StopChan chan bool
StopChan chan struct{}
LogChannel chan logPayload
Dropped atomic.Uint64
Writers atomic.Value // []Writer
@ -90,10 +90,13 @@ func GetDroppedLogs() uint64 {
// Start implements starter.Service interface.
func (s *writerService) Start(_ context.Context, _ *Logger) error {
s.FilesLock.Lock()
defer s.FilesLock.Unlock()
if !s.Running.CompareAndSwap(false, true) {
return nil
}
s.StopChan = make(chan bool)
s.LogChannel = make(chan logPayload, 10000)
s.StopChan = make(chan struct{})
go s.writerRunner()
return nil
}
@ -163,6 +166,9 @@ func (s *writerService) processLog(payload logPayload) {
payload.writer.Log(payload.entry, payload.buf)
} else if payload.file != nil {
payload.file.Write(time.Now(), payload.buf)
} else {
// 默认回退到控制台打印
fmt.Println(Viewable(string(payload.buf)))
}
}