Estoy ejecutando una aplicación de sinatra a través de RACK.¿A dónde se conecta RACK?
¿A qué archivo se registra la actividad? Además, ¿cómo puedo establecer la ruta del archivo de registro?
Estoy ejecutando una aplicación de sinatra a través de RACK.¿A dónde se conecta RACK?
¿A qué archivo se registra la actividad? Además, ¿cómo puedo establecer la ruta del archivo de registro?
Depende. Muchos desarrolladores definen su archivo de registro de aplicación en la aplicación/servername.log o simplemente en la ruta actual donde se carga la aplicación Rack.
Sí, puede cambiar su ruta.
Por lo general, aparece 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 que este código puede estar en cualquier lugar de su aplicación Rack, así que busque "log" en su directorio de aplicaciones.
$ cd projectname $ grep -ri 'log' *
divertirse y publicar aquí su config.ru y/o el archivo principalproyecto.rb.
Los object_id
son inicialmente iguales pero es mejor asignarlos 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
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 arroyos 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!
Hola Francisco. Sí, esto funcionó perfecto para mí. log_path = "" LOGGER = Logger.new (log_path, "continuo") log = File.new (log_path, "a +") STDOUT.reopen (log) STDERR .reopen (log) –
@include: ¿Hay alguna forma de que pueda hacer que los entornos de producción y desarrollo se registren en los archivos, pero que realicen un registro de prueba en la terminal? Parece que cuando vuelvo a abrir '$ stdout' y' $ stderr', también redirige la salida de prueba a los archivos. –
La reapertura de STDOUT puede hacer que Passenger no se inicie: https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems – fguillen