Personalizacion del logger

Hola estoy intentando, poner una marca de tiempo distinta a Time.now ,
en cada invocacion del logger, para ello he hecho un metodo, lo pongo
mas abajo por si le sirve a alguien.

el caso es que podria ponerlo en un controller, para tenerlo accesible,
pero asi tendria que estar replicando el codigo en cada uno de los
controller, ¿me recomendais algun sitio? he pensado en abrir el logger y
añadirle el metodo, pero donde podria hacer eso? en los initializers?.

Gracias!!!

def time_mark
t = Time.now
result = Time.now.strftime(Time.now.strftime("%Y/%m/%d-%H:%M:%S %Z "))
if t.utc_offset >= 0
result += ‘+’
else
result += ’ -’
end
if (t.utc_offset / 3600) < 10
result += ‘0’
end
result += (t.utc_offset / 3600).to_s + ‘:’
if (t.utc_offset % 3600) < 10
result += ‘0’
end
result += (t.utc_offset % 3600).to_s
return result
end

un ejemplo de uso seria

logger.debug “#{time_marking}”

2009/06/24-09:59:56 CEST +02:00

Tal vez este railscasts es lo que andas buscando.

Suerte,

  • Juan

2009/6/24 Asaf A. [email protected]

perfecto gracias Juan!!

2009/6/24 Asaf A. [email protected]:

 end
 result += (t.utc_offset / 3600).to_s + ‘:’
 if (t.utc_offset % 3600) < 10
  result += ‘0’
 end
 result += (t.utc_offset % 3600).to_s
 return result
end

No está realmente relaciónado con tu pregunta, pero una cosa, al
copiar has puesto dos invocaciones a Time.now.strftime, que supongo
que no es correcto.

Por otro lado, un poco de limpieza:

def time_mark
now = Time.now
date_hour = now.strftime(“%Y/%m/%d-%H:%M:%S %Z”)
sprintf(“#{date_hour} %+03d:%02d”, now.utc_offset / 3600,
now.utc_offset % 3600)
end

(Cosa curiosa: en el caso de las horas, tiene que ser un 3 porque
parece que el signo cuenta para el “ancho” del campo. No se es un
peculiaridad de Ruby o viene de la función original del C, pero desde
luego era algo que no esperaba).

Digo yo, no puedes meter el método en el application_controller.rb y
con un before_filter en este mismo llamarlo siempre?

2009/6/24 Daniel R. Troitiño [email protected]:

Ceritium wrote:

Digo yo, no puedes meter el m�todo en el application_controller.rb y
con un before_filter en este mismo llamarlo siempre?

2009/6/24 Daniel R. Troiti�o [email protected]:

Yo también me inclinaria por esa opcion

No está realmente relaciónado con tu pregunta, pero una cosa, al
copiar has puesto dos invocaciones a Time.now.strftime, que supongo
que no es correcto.

cierto, se me paso, gracias por la corrección.

Por otro lado, un poco de limpieza:

def time_mark
now = Time.now
date_hour = now.strftime("%Y/%m/%d-%H:%M:%S %Z")
sprintf("#{date_hour} %+03d:%02d", now.utc_offset / 3600,
now.utc_offset % 3600)
end

(Cosa curiosa: en el caso de las horas, tiene que ser un 3 porque
parece que el signo cuenta para el “ancho” del campo. No se es un
peculiaridad de Ruby o viene de la función original del C, pero desde
luego era algo que no esperaba).

mucho más limpio, no conocia sprintf, lo tendre en cuenta.

Gracias!!