読者です 読者をやめる 読者になる 読者になる

GAE/Go の goon が出力するエラーを止める

goonの内部で以下のようなエラーが出力されていた。

ERROR: goon - goon.go:194 - pospome error



エラーメッセージの「pospome error」は以下のように自分が用意した error なので、
このエラーを返しているどこかで goon がエラーログを出力しているみたい。

PospomeError = errors.New("pospome error")



エラーログを監視対象にして特定の閾値を設定している場合、
goon内で出力されるログも考慮して閾値を設定する必要があるので、
このログを止めたいケースもありそうな気がする。


結論から言うと、
以下のように goon が持っているフラグを false にすればいい。

goon.LogErrors = false

https://github.com/xStrom/goon/blob/a3e1c6182761ea1bc1bf23224ddc501743c2c633/goon.go#L38



goon.go:194 は以下
https://github.com/xStrom/goon/blob/a3e1c6182761ea1bc1bf23224ddc501743c2c633/goon.go#L200


ここで出力している error は以下から来ていて、
トランザクション内でエラーになった場合にエラーを出力している。
https://github.com/xStrom/goon/blob/a3e1c6182761ea1bc1bf23224ddc501743c2c633/goon.go#L169


今回は以下のようにトランザクション内で error を返していたので、
これが引っかかったみたい。

err := goon.RunInTransaction(ctx, func(ctx context.Context) error {
    if xxx {
        return PospomeError
    }
    return nil
}, nil)



で、具体的にエラーを出力しているのは以下。
「if !LogErrors」を見れば分かる通り、
LogErrors を false にすることでログの出力を止めることができる。
https://github.com/xStrom/goon/blob/a3e1c6182761ea1bc1bf23224ddc501743c2c633/goon.go#L96-L106