Domanda

Io sono in esecuzione di una sinatra app attraverso RACK.

A quale file fa attività registrate ?Inoltre, come posso impostare il percorso del file di log ?

È stato utile?

Soluzione

Dipende. Molti sviluppatori definiscono il loro file di log app per app / servername.log o semplicemente per il percorso corrente in cui viene caricata l'applicazione Rack.

Sì, è possibile modificare il suo 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. Ma ricordate questo codice può essere ovunque nel rack app, quindi si prega di cercare per "log" nella directory dell'applicazione.

$ cd projectname
$ grep -ri 'log' *

divertirsi e post qui il tuo config.ru e / o la mainprojectfile.rb.

Altri suggerimenti

La linea di LOGGER = Logger.new("sinatra.log") in @include la risposta di sopra non ha funzionato per me.

Tuttavia, un'alternativa elencati qui (con alcune spiegazioni utili) funzionato per me, testato con rubino 2.5.3 e sinatra 2.0.1.

Per ulteriori info, che alternativa è basata sulla struttura presentati in un Sinatra ricetta.

Il object_id sono inizialmente lo stesso, 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

Lo 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 flussi ancora al terminale qui,

>> STDERR.puts "Uh-oh, original STDERR"
Uh-oh, original STDERR
=> nil

Ripristina $stderr,

>> $stderr = STDERR
=> #<IO:0x106fddb88>
>> $stderr.object_id == STDERR.object_id
=> true

E siamo di nuovo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top