refactor: 全面集成 slog 日志到 handler、service、middleware
- cmd/main.go: 集成 logger.Init 和日志中间件,替换标准 log 包 - handler 层: 5xx 错误记录完整日志,返回通用消息(防内部信息泄露) - service 层: LLM/图片生成/存储/认证等关键操作补充结构化日志 - auth 中间件: 记录认证失败原因 - generate.go: 后台管线任务使用带 task_id 的 logger
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"gen2d/internal/config"
|
||||
"gen2d/internal/logger"
|
||||
|
||||
"github.com/qiniu/go-sdk/v7/storagev2/credentials"
|
||||
"github.com/qiniu/go-sdk/v7/storagev2/objects"
|
||||
@@ -39,8 +40,11 @@ func NewStorageService(cfg config.QiniuConfig) *StorageService {
|
||||
|
||||
// Upload 上传图片字节到七牛云,返回 CDN 访问 URL。
|
||||
func (s *StorageService) Upload(ctx context.Context, key string, data []byte) (string, error) {
|
||||
l := logger.FromCtx(ctx)
|
||||
|
||||
putPolicy, err := uptoken.NewPutPolicy(s.bucket, time.Now().Add(1*time.Hour))
|
||||
if err != nil {
|
||||
l.Error("qiniu put policy failed", "key", key, "error", err)
|
||||
return "", fmt.Errorf("qiniu put policy: %w", err)
|
||||
}
|
||||
upToken := uptoken.NewSigner(putPolicy, s.creds)
|
||||
@@ -49,14 +53,19 @@ func (s *StorageService) Upload(ctx context.Context, key string, data []byte) (s
|
||||
UpTokenProvider: upToken,
|
||||
})
|
||||
|
||||
l.Info("uploading to qiniu", "key", key, "size", len(data))
|
||||
err = uploadMgr.UploadReader(ctx, bytes.NewReader(data), &uploader.ObjectOptions{
|
||||
BucketName: s.bucket,
|
||||
ObjectName: &key,
|
||||
}, nil)
|
||||
if err != nil {
|
||||
l.Error("qiniu upload failed", "key", key, "error", err)
|
||||
return "", fmt.Errorf("qiniu upload: %w", err)
|
||||
}
|
||||
return s.buildURL(key), nil
|
||||
|
||||
cdnURL := s.buildURL(key)
|
||||
l.Info("upload succeeded", "key", key, "url", cdnURL)
|
||||
return cdnURL, nil
|
||||
}
|
||||
|
||||
// GetDownloadURL 生成素材的下载 URL。
|
||||
@@ -67,8 +76,17 @@ func (s *StorageService) GetDownloadURL(_ context.Context, key string) (string,
|
||||
|
||||
// Delete 从七牛云删除指定对象。
|
||||
func (s *StorageService) Delete(ctx context.Context, key string) error {
|
||||
l := logger.FromCtx(ctx)
|
||||
|
||||
bucket := s.objectsMgr.Bucket(s.bucket)
|
||||
return bucket.Object(key).Delete().Call(ctx)
|
||||
err := bucket.Object(key).Delete().Call(ctx)
|
||||
if err != nil {
|
||||
l.Error("qiniu delete failed", "key", key, "error", err)
|
||||
return err
|
||||
}
|
||||
|
||||
l.Info("delete succeeded", "key", key)
|
||||
return nil
|
||||
}
|
||||
|
||||
// buildURL 根据配置构建完整的 CDN URL。
|
||||
|
||||
Reference in New Issue
Block a user