ども、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 で手軽にログを吐かせる方法