Question

Je suis en cours d'exécution d'une application par sinatra RACK.

Pour quel fichier ne soit enregistré l'activité? Aussi comment puis-je définir le chemin du fichier journal?

Était-ce utile?

La solution

Cela dépend. De nombreux développeurs définissent leur fichier journal app app / servername.log ou juste pour le chemin actuel où l'application du rack est chargé.

Oui, vous pouvez changer son chemin.

En général, vous obtenez un fichier config.ru avec quelque chose comme:

  log = File.new("sinatra.log", "a+")
  $stdout.reopen(log)
  $stderr.reopen(log)

et / ou

configure do
  LOGGER = Logger.new("sinatra.log")
  enable :logging, :dump_errors
  set :raise_errors, true
end
dans ce cas

le fichier journal se trouve sous appdir / sinatra.log. Mais rappelez-vous ce code peut être n'importe où dans votre application Rack, donc s'il vous plaît chercher « log » dans votre répertoire d'application.

$ cd projectname
$ grep -ri 'log' *

vous amuser et poster ici votre config.ru et / ou mainprojectfile.rb.

Autres conseils

La ligne de LOGGER = Logger.new("sinatra.log") @ include de réponse ci-dessus ne fonctionne pas pour moi.

Cependant, une alternative liste (le long avec quelques explications utiles) ont travaillé pour moi, testé avec rubis 2.5.3 et 2.0.1 sinatra.

Pour plus d'infos, cette alternative est basée sur la structure présentée dans un recette Sinatra .

Les object_id sont d'abord les mêmes, mais il est préférable d'attribuer à $stderr. Cela laisse également d'ouvrir pour retourner le flux à l'endroit où il était à l'origine avec STDERR:

 $ irb
>> $stderr.object_id == STDERR.object_id
=> true

Même objet, pour l'instant. Envoyez ailleurs,

>> $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 et STDERR font référence à des objets différents. STDERR cours d'eau encore à la borne ici,

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

Restaurer $stderr,

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

Et nous sommes de retour!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top