minio connection log
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package ai_summarizer
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// logMinIOFailure records a structured log for a MinIO error and returns a wrapped
|
||||
// error suitable for callers (connection issues include ErrMinIOUnavailable).
|
||||
func (s *StorageClient) logMinIOFailure(operation string, err error, fields map[string]interface{}) error {
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
if fields == nil {
|
||||
fields = make(map[string]interface{}, 4)
|
||||
}
|
||||
fields["endpoint"] = s.config.MinioEndpoint
|
||||
fields["bucket"] = s.config.MinioBucket
|
||||
fields["operation"] = operation
|
||||
fields["error"] = err.Error()
|
||||
|
||||
switch {
|
||||
case isMinioConnectionError(err):
|
||||
fields["failure_type"] = "connection"
|
||||
s.logger.Error("MinIO connection unavailable", fields)
|
||||
return wrapMinIOError(err)
|
||||
case errors.Is(err, ErrBucketNotFound):
|
||||
fields["failure_type"] = "bucket_not_found"
|
||||
s.logger.Error("MinIO bucket not found", fields)
|
||||
return err
|
||||
default:
|
||||
fields["failure_type"] = "storage"
|
||||
s.logger.Error("MinIO operation failed", fields)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// logMinIOFailuref is like logMinIOFailure with a formatted message prefix on the error.
|
||||
func (s *StorageClient) logMinIOFailuref(operation string, err error, fields map[string]interface{}, format string, args ...interface{}) error {
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
wrapped := fmt.Errorf(format+": %w", append(args, err)...)
|
||||
return s.logMinIOFailure(operation, wrapped, fields)
|
||||
}
|
||||
Reference in New Issue
Block a user