Pregunta

Estoy corriendo una aplicación Sinatra a través RACK.

Para qué archivo se vuelve a registrar la actividad? También cómo puedo establecer la ruta de archivo de registro?

¿Fue útil?

Solución

Depende. Muchos desarrolladores definen su archivo de registro de una aplicación a otra / servername.log o simplemente a la ruta actual en la que se carga la aplicación Rack.

Sí se puede cambiar de ruta.

Por lo general, se obtiene un archivo config.ru con algo como:

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

y / o

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

En este caso, el archivo de registro se encuentra bajo appdir / sinatra.log. Pero recuerde este código puede estar en cualquier lugar en su aplicación Rack, así que por favor buscar el "registro" en el directorio de la aplicación.

$ cd projectname
$ grep -ri 'log' *

divertirse y puesto aquí su config.ru y / o la mainprojectfile.rb.

Otros consejos

La línea de LOGGER = Logger.new("sinatra.log") en @ incluye de respuesta anterior no funcionaba para mí.

Sin embargo, una alternativa en la lista aquí (junto con algunas explicaciones votos) trabajado para mí, probado con el rubí 2.5.3 y 2.0.1 Sinatra.

Para obtener información adicional, esa alternativa se basa en la estructura presentada en una receta Sinatra .

El object_id son inicialmente los mismos pero que es mejor asignar a $stderr. Eso también te deja abierto para devolver la corriente a donde estaba originalmente con STDERR:

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

Lo mismo objeto, por ahora. Enviarlo a otra parte,

>> $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 y STDERR se refieren a diferentes objetos. STDERR todavía fluye al terminal aquí,

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

Restaurar $stderr,

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

Y estamos de vuelta!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top