ドキュメントでセクションを見つけてみてください)
不在です
私はそれを見つけたいです))
例えば?
Eeeem .....たとえば、これは何ですか? たとえば、可能な実装の場合、コンソールオブジェクトのようにllggerインターフェイスを宣言します。 つまり、通常のメソッドであるdebug()info()、varn()、error()、およびクラスコンストラクターのopshenパラメーターは、このようなインターフェイスを持つオブジェクトを受け入れます。
それはどこで役に立ちますか:たとえば、私たちがエルクを目指したように、プロジェクトのロギングシステムが一般的にある場合に非常に役立ちます。 このようなプロジェクトでは、VKメッセージも一般的なロギングシステムに適合する必要があります。
すべてのエラーがPromise
スローされるため、ライブラリは原則としてエラーをログに記録しません(そうでない場合、アンチパターンが発生します)。 ミドルウェアの例外について話す場合、それらはすべて1つのルートミドルウェアでキャッチできます。
// Custom catch all the errors
vk.updates.use(async (context, next) => {
try {
await next();
} catch (error) {
logger.error('An error has occurred', { error });
}
});
グローバルミドルウェアエラー処理の詳細については、こちらを
そして、誰がエラーロギングについて話していましたか? 現在のチケットは、すべてのイベントをログに記録するカスタムロガーについて公開されています。 たとえば、呼び出されたメソッドの名前、メソッドパラメータ。 ライブラリの内部作業の仕組みを理解して、ライブラリ内で発生する呼び出しを確認し、ログでこれらの呼び出しを確認し、1秒、1分、1時間、1か月あたりの呼び出し数に関する統計を収集し、結果を分析することが重要です。これはすべて、許可されるリクエスト数の制限、最適化に関連しています。 実行によるエラー処理ではありません。 それはログについてです。
@isinkin @negezorところで、なぜチケットが閉じたのですか?
これはライブラリの責任ではありません。すべてのメソッドを独自のハンドラーでラップし、必要に応じてログに記録できます。 ライブラリには、デバッグモジュールがDEBUG=vk-io:*
示すモジュールの呼び出されたメソッドを見つける機能があります。
@negezorリクエストを明確にしたいと思いますが、誤解されている可能性があります。 vk-io
内にログを記録するための独自のライブラリを作成することはお勧めしません。 それがそのように理解されたならば、それはごみです。 これは図書館の責任ではないことに同意します。 既存のライブラリ(私の場合はhttps://www.npmjs.com/package/bunyan)のみをvk-io
接続する方法を尋ねました。 つまり、 как создать
ではなく、 как подключить
です。
外部ロガーを接続するためのメカニズムがvk-io
の責任の領域にあることは明らかだと思います。
たとえば、TypeORMでどのように編成されているかを添付します。 そのようなメカニズムをコピーするだけでも非常にクールです。 https://typeorm.io/#/logging
ログが受け入れられるラッパーでパブリックメソッド呼び出しをラップできるという約束。 ただし、このメソッドでは、ログからmessages.send
への10回の呼び出しが実際に1回のexecute
に置き換えられたことを判別できません。 したがって、ロギングツールとしては役に立ちません。
ロガーが内蔵されているというメッセージDEBUG=vk-io:*
コメントの仕方すらわかりません。 これは、敬意を払ってロガーではありません。 これがロガーの場合、そのようなログをELKに転送する方法を教えてください。 その後、私は同意します。
兄弟、どこにいるの?
最も参考になるコメント
すべてのエラーが
Promise
スローされるため、ライブラリは原則としてエラーをログに記録しません(そうでない場合、アンチパターンが発生します)。 ミドルウェアの例外について話す場合、それらはすべて1つのルートミドルウェアでキャッチできます。グローバルミドルウェアエラー処理の詳細については、こちらを