Slide 46
Slide 46 text
© 2024 ANDPAD All Rights Reserved.
loggerの埋め込み
46
1. func (s *customStmt) QueryContext(
2. ctx context.Context,
3. args []driver.NamedValue) (driver.Rows, error) {
4. casted, ok := s.stmt.(driver.StmtQueryContext)
5. if !ok {
6. // fallback
7. dargs := make([]driver.Value, len(args))
8. for i, nv := range args { dargs[i] = nv.Value }
9. return s.Query(dargs)
10. }
11.
12. rows, err := casted.QueryContext(ctx, args)
13. if err != nil {
14. s.logger.Error("query failed", slog.String("query", s.query),
15. slog.Any("args", args), slog.Any("error", err))
16. } else {
17. s.logger.Info("queried success", slog.String("query", s.query),
18. slog.Any("args", args))
19. }
20.
21. return rows, err
22. }