EventMachine と async_sinatra を使用して着信 HTTP 要求を非同期的に処理する、別の TCP ベースのサービスのフロントエンドとして、最初の Sinatra ベースの Web アプリを作成しています。アプリをテストしているとき、同期ルートへのすべてのリクエストは共通のログ形式で stdout に記録されますが、非同期リクエストはそうではありません。
ソース コードの一部を async_sinatra、Sinatra、Thin、Rack まで読みましたが、同期要求のログは CommonLogger#call を通じて行われているようです。ただし、async_sinatra または Thin の非同期コードのどこにも、ロギング ミドルウェアを介して非同期要求を渡すように見える場所を見つけることができません (async_sinatra のSinatra::Helpers#bodyとThin::Connection.post_processを見ています)。 Thin の connection.rb:68 と request.rb:132 の env['.async_callback'] に書き込まれます)。
私は C の経験はありますが、Ruby には比較的慣れていないため、用語や表記法を間違って使用している場合は、修正してください。前もって感謝します。
編集:これはエラー処理にも影響します。非同期リクエストで例外が発生した場合、リクエストは終了せず、エラーはログに記録されません。