WEBrick utiliza una bitácora para registrar su actividad. Esta bitácora del servidor se pone a su vez a disposición de todos los servlets. Por favor, utilizarla para registrar la actividad del servlet en vez de lanzar apunte tras apunte, por ejemplo a $stderr.
La bitácora tiene cinco niveles diferentes de apuntes y un nivel por defecto. Cada nivel tiene su propia prioridad y los apuntes se realizan si el apunte tiene un nivel igual o superior al nivel por defecto.
Los niveles son los siguientes (organizados de mayor a menor prioridad):
fatal
error
warn
info
debug
class HelloWorldServlet < HTTPServlet::AbstractServlet
def do_GET( req, res )
@logger.debug( "Vamos a devolver 'Hola mundo'" )
res.body= 'Hola mundo'
end
end
#Ahora definimos una bitácora que la salida va a /dev/null
# y tiene un nivel por defecto de 'INFO'
null_logger= Log.new( '/dev/null' )
#Esta es una bitácora que la salida va a $stderr
# y tiene un nivel por defecto de 'DEBUG'
fatal_error_logger= Log.new( $stderr, Log::DEBUG )
start_webrick( :Logger=> fatal_stderr_logger ) do |server|
server.mount( '/helloworld', HelloWorldServlet )
end
La bitácora de accesos es especial: probablemente se acceda a ella con más frecuencia que a otras. Por lo tanto, puede que no se quiera hacer nada especial para sacarla del mecanismo general de apuntes. Así, WEBrick no mezcla la bitácora de accesos con otras bitácoras.
Bien, de hecho, la bitácora de acceso y la del servidor, por defecto, realizan la salida sobre el mismo sumidero: $stderr. Vamos a cambiar este comportamiento en el siguiente ejemplo.
server_logger= Log.new('/var/log/webrick/server.log')
# La configuración de :accessLog necesita un Array.
# cada elemento del array debe ser un array de dos
# elementos donde el primero es un stream ( o cualquier
# objeto que responda a << ) y el segundo es el
# formato de los apuntes. En webrick/accesslog.rb están
# los diferentes formatos disponibles.
access_log_stream=
File.open('/var/log/webrick/access.log','w')
access_log= [[access_log_stream, AccessLog::COMBINED_LOG_FORMAT]]
start_webrick(
:Logger=> server_logger,
:AccessLog=> access_log
)