Forum: Rails-ES personalizacion del logger

Posted by Asaf Asaf (asaf)
on 2009-06-24 23:03
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
Posted by Juan Gallego galisteo (nickel83)
on 2009-06-24 23:08
(Received via mailing list)
Tal vez este railscasts es lo que andas buscando.
http://railscasts.com/episodes/56-the-logger


Suerte,

- Juan


2009/6/24 Asaf Asaf <ruby-forum-incoming@andreas-s.net>
Posted by Asaf Asaf (asaf)
on 2009-06-24 23:38
perfecto gracias Juan!!
Posted by Daniel Rodriguez Troitiño (Guest)
on 2009-06-24 23:58
(Received via mailing list)
2009/6/24 Asaf Asaf <ruby-forum-incoming@andreas-s.net>:
>  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).
Posted by Ceritium (Guest)
on 2009-06-25 01:47
(Received via mailing list)
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 Rodriguez Troitiño <notzcoolx@yahoo.es>:
Posted by Asaf Asaf (asaf)
on 2009-06-25 07:47
> 
> 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!!
Posted by Jose vicente Ribera pellicer (joripel)
on 2009-06-25 12:08
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 Rodriguez Troiti�o <notzcoolx@yahoo.es>:


Yo también me inclinaria por esa opcion
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.