teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/05/13 00:13

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -41,4 +41,36 @@
41
41
  fmt.Println(ParseJsonBody(dummyReq, &loginUser))
42
42
  fmt.Println(loginUser)
43
43
  }
44
+ ```
45
+
46
+ ## 追記
47
+
48
+ 質問にある以下の表示は問題解決に相応しくありません。それはログ出力を代行してしまっているからです。
49
+ (代行する関数の場所がわかったとしてもエラー発生源は分かりません)
50
+ ```
51
+ C:/Users/(ユーザー名)/Documents/Project/handler/handlerutil/handlerutil.go:21:
52
+ ```
53
+
54
+ また、エラーログ出力を代行する関数を起こす時にはセオリーがあって、以下の様にすると
55
+ ErrorLoggerラッパーを呼び出したコードの場所を表示することができます。
56
+ (これをしない場合、log機能はエラーを検出したところで使いましょう)
57
+
58
+ [https://play.golang.org/p/655wZJE9_s6](https://play.golang.org/p/655wZJE9_s6)
59
+ ```go
60
+ package main
61
+
62
+ import (
63
+ "fmt"
64
+ "log"
65
+ "runtime"
66
+ )
67
+
68
+ func ErrorLogger(err error) {
69
+ _, src, l, _ := runtime.Caller(1)
70
+ log.Printf("%s:%d %v", src, l, err)
71
+ }
72
+
73
+ func main() {
74
+ ErrorLogger(fmt.Errorf("failed"))
75
+ }
44
76
  ```