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?
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!