質問
私はRACKを通じてシナトラアプリを実行しています。
へは、どのファイルアクティビティが記録されますでしょうか?また、どのように私は、ログファイルのパスを設定することができますか?
解決
これは依存しています。多くの開発者はアプリ/ serverName.logとするか、単にラックアプリがロードされている現在のパスに自分のアプリのログファイルを定義します。
はいあなたはそれのパスを変更することができます。
通常、あなたのようなものでconfig.ruファイルを取得します
log = File.new("sinatra.log", "a+") $stdout.reopen(log) $stderr.reopen(log)
および/または
configure do LOGGER = Logger.new("sinatra.log") enable :logging, :dump_errors set :raise_errors, true end
は、この場合、ログファイルはAPPDIR / sinatra.logの下に位置しています。しかし、あなたのラックアプリ内のどこにでもすることができ、このコードを覚えているので、あなたのアプリケーションディレクトリにある「ログ」を模索してください。
$ cd projectname $ grep -ri 'log' *
の楽しみを持っているし、ここにあなたのconfig.ruおよび/またはmainprojectfile.rbを投稿します。
他のヒント
object_id
は、最初は同じですが、それは$stderr
に割り当てる方が良いでしょう。それはまた、あなたはそれがSTDERR
で、もともとあった場所にストリームを返すために開く葉ます:
$ irb
>> $stderr.object_id == STDERR.object_id
=> true
同じオブジェクト、今のところ。
、別の場所に送ります>> $stderr = File.open('/tmp/foo', 'w')
=> #<File:/tmp/foo>
>> $stderr.puts "Uh-oh, foo"
=> nil
>> $stderr.flush # if you want to verify its output
=> #<File:/tmp/foo>
>> $stderr.object_id == STDERR.object_id
=> false
$stderr
とSTDERR
は異なるオブジェクトを参照してください。 STDERR
はまだここに端末にストリーム、
>> STDERR.puts "Uh-oh, original STDERR"
Uh-oh, original STDERR
=> nil
$stderr
を復元し、
>> $stderr = STDERR
=> #<IO:0x106fddb88>
>> $stderr.object_id == STDERR.object_id
=> true
そして、我々しているバック!
所属していません StackOverflow