ども、cloudpack の かっぱ (@inokara) です。
自称インフラエンジ二屋でも…
ちょっとしたプロキシの設定等は Sinatra を利用すると俄然捗って嬉しいけど Sinatra からログ吐ければ作業がもっと捗るのにッて思ったら意外に簡単だったのでメモ。
logger でお手軽に
お手軽に
logger を使うだけ。
require 'sinatra' require 'sinatra/reloader' require 'logger' logger = Logger.new('sinatra.log') post '/foo' do http_headers = request.env.select { |k, v| k.start_with?('HTTP_') } logger.info http_headers logger.info params['key1'] end
上記では logger.new
でインスタンス作って logger.info
を使って info
レベルでリクエストヘッダとパラメータ key1
の値をログに記録する。ログファイルは Sinatra を起動したカレントディレクトリに出力される。
試してみる
curl -X POST "xxxxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com/foo" -d "key1=abc"
以下のようなログが記録された。
I, [2015-02-07T01:03:14.755162 #29484] INFO -- : abc I, [2015-02-07T01:03:14.755222 #29484] INFO -- : {"HTTP_VERSION"=>"HTTP/1.1", "HTTP_HOST"=>"xxxxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com", "HTTP_ACCEPT"=>"*/*", "HTTP_USER_AGENT"=>"curl/7.30.0", "HTTP_X_FORWARDED_FOR"=>"xxx.xxx.xxx.xxx", "HTTP_X_FORWARDED_PORT"=>"80", "HTTP_X_FORWARDED_PROTO"=>"http", "HTTP_CONNECTION"=>"keep-alive"}
おお、これは捗りそう。
今日の知見
- logger 積極的を使おう
元記事はこちらです。
「俺の知見 – Sinatra で手軽にログを吐かせる方法」