Cambiar log level en Producción?

¡Hola!

Actualmente estoy intentando depurar algunas consultas lentas que solo ocurren en entornos que se ejecutan en modo de producción. Noté que el nivel de registro parece estar codificado en modo de producción (referencia de código) sin forma de configurarlo directamente. Me gustaría cambiar este nivel de registro a depuración (al menos temporalmente) para poder ver más información; ¿hay alguna forma de lograr esto?

Intenté algunas soluciones alternativas bastante improvisadas que implicaron cambiar el nivel de registro durante el tiempo de ejecución con la consola de Rails, pero ninguna de las soluciones hizo que las consultas de la base de datos aparecieran en los registros de depuración (si hice registros de depuración manualmente con Rails.logger.debug en la consola de Rails, estos aparecieron después de las soluciones).

¡Gracias!

P.D. Solo para calmar cualquier preocupación potencial sobre mi comentario anterior sobre problemas que solo ocurren en entornos de producción, estoy usando Discourse de una manera bastante no estándar que involucra una gran cantidad de categorías; los problemas que enfrento probablemente no sean enfrentados por ninguna otra instancia de Discourse. :slight_smile:

3 Me gusta

Esto me ha estado desconcertando recientemente.

image

He confirmado que tengo el nivel de registro info, sin embargo, no importa cuánto:

Rails.logger.info "blah blah blah"

aparezca y /errors se mantenga obstinadamente en warn, ¿qué me estoy perdiendo?

¿Alguien tiene una solución para esto?

Es muy frustrante

image

… y sin embargo no puedo ver los registros de nivel Info en /logs!

Alternar “info” no hace nada:

No estoy seguro de cómo se supone que debemos diagnosticar ciertos tipos de problemas que solo ocurren en Producción sin esto… :sweat_smile:

¿Qué está bloqueando los registros de nivel Info?

Más cosas que he intentado:

  • He revisado production.log y ¡la información que quiero está ahí!
  • He mirado la salida de Logster.config en la consola de Rails y no es obviamente útil.
  • lo mismo /vendor/bundle/ruby/3.2.0/gems/logster-2.19.1/lib/logster/configuration.rb

Así que todavía no entiendo por qué los registros de nivel info no se muestran en /logs

Claramente algo está filtrando los registros de nivel info entre production.log y Logster.

2 Me gusta

Si entiendo bien, está suprimiendo la información y la depuración en modo de producción por diseño. Blaming logster/lib/logster/rails/railtie.rb at main · discourse/logster · GitHub

store.level = Logger::Severity::WARN if Rails.env.production?

De una entrada de blog

En modo de producción, agrega errores similares detectando huellas dactilares de las trazas de pila, escuchando advertencias/errores y mensajes fatales. La intención es mostrar una lista de problemas abiertos de la aplicación que se pueden resolver de alguna manera.

En modo de desarrollo, proporciona una transmisión completa de todos los registros producidos por Rails (depuración y superior). Esto tiene ventajas significativas sobre la consola, ya que tiene acceso adecuado a las trazas de pila de cada línea de registro.

2 Me gusta

Gracias.

Tiene sentido para el caso principal.

Sin embargo, ¿eso no parece irrazonablemente restrictivo y debería ser configurable para circunstancias especiales?

Eso incluye los momentos en que tienes casos extremos en producción que deseas investigar.

1 me gusta