Sto eseguendo un'applicazione sinatra tramite RACK.Dove si collega RACK?
A quale file viene registrata l'attività? Inoltre, come posso impostare il percorso del file di registro?
Sto eseguendo un'applicazione sinatra tramite RACK.Dove si collega RACK?
A quale file viene registrata l'attività? Inoltre, come posso impostare il percorso del file di registro?
Dipende. Molti sviluppatori definiscono il loro file di registro app su app/servername.log o solo sul percorso corrente in cui viene caricata l'app Rack.
Sì, è possibile modificare il percorso.
Di solito si ottiene un file config.ru con qualcosa di simile:
log = File.new("sinatra.log", "a+") $stdout.reopen(log) $stderr.reopen(log)
e/o
configure do LOGGER = Logger.new("sinatra.log") enable :logging, :dump_errors set :raise_errors, true end
in questo caso il file di log si trova sotto appdir/sinatra.log. Ricorda però che questo codice può essere ovunque nell'app Rack, quindi cerca "log" nella directory dell'applicazione.
$ cd projectname $ grep -ri 'log' *
divertirsi e post qui il tuo config.ru e/o la mainprojectfile.rb.
Il object_id
inizialmente sono gli stessi ma è meglio assegnare a $stderr
. Che lascia anche si apre per riportare il flusso a dove era in origine con STDERR
:
$ irb
>> $stderr.object_id == STDERR.object_id
=> true
Stesso oggetto, per ora. Invia altrove,
>> $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
e STDERR
si riferiscono a oggetti diversi. STDERR
torrenti ancora al terminale qui,
>> STDERR.puts "Uh-oh, original STDERR"
Uh-oh, original STDERR
=> nil
Restore $stderr
,
>> $stderr = STDERR
=> #<IO:0x106fddb88>
>> $stderr.object_id == STDERR.object_id
=> true
E siamo tornati!
Ciao Francisco. Sì, questo ha funzionato perfettamente per me. log_path = "" LOGGER = Logger.new (log_path, "quotidiano") log = File.new (log_path, "A +") STDOUT.reopen (log) STDERR .reopen (log) –
@include: c'è un modo per far sì che gli ambienti di produzione e di sviluppo si colleghino ai file, ma crei un log di test sul terminale? Sembra che quando riapuro '$ stdout' e' $ stderr', reindirizza anche l'output di test ai file. –
La riapertura di STDOUT può impedire a Passenger di avviarsi: https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems – fguillen