Changer le niveau de journalisation en production ?

Salut !

J’essaie actuellement de déboguer des requêtes lentes qui ne se produisent que dans les environnements exécutés en mode production. J’ai remarqué que le niveau de journalisation semble être codé en dur en mode production (référence de code) sans possibilité de le configurer directement. J’aimerais changer ce niveau de journalisation en debug (au moins temporairement) afin de pouvoir voir plus d’informations ; existe-t-il un moyen d’y parvenir ?

J’ai essayé des solutions de contournement assez bancales qui impliquaient de changer le niveau de journalisation pendant l’exécution avec la console Rails, mais aucune de ces astuces n’a permis aux requêtes de base de données d’apparaître dans les journaux de débogage (si je faisais manuellement des journaux de débogage avec Rails.logger.debug dans la console Rails, ceux-ci apparaissaient après les astuces, cependant).

Merci !

P.S. Juste pour apaiser toute inquiétude potentielle concernant mon commentaire ci-dessus sur les problèmes qui ne se produisent qu’en environnement de production, j’utilise Discourse d’une manière assez non standard qui implique un grand nombre de catégories ; les problèmes que je rencontre ne sont probablement pas rencontrés par d’autres instances de Discourse. :slight_smile:

3 « J'aime »

Cela me tracasse récemment.

image

J’ai confirmé que mon niveau de journalisation est sur info, pourtant aucune quantité de :

Rails.logger.info "blah blah blah"

n’apparaît et /errors s’en tient obstinément à warn - qu’est-ce qui me manque ?

Quelqu’un a une solution à cela ?

C’est très frustrant

image

… et pourtant je ne vois pas les logs de niveau Info dans /logs !

Activer/désactiver “info” ne fait rien :

Je ne suis pas sûr comment nous sommes censés diagnostiquer certains types de problèmes qui ne se produisent qu’en Production sans cela… :sweat_smile:

Qu’est-ce qui bloque les logs de niveau info ?

Plus de choses que j’ai essayées :

  • J’ai vérifié production.log et les logs d’informations que je veux s’y trouvent !
  • J’ai examiné la sortie de Logster.config sur la console Rails et ce n’est pas manifestement utile.
  • Idem pour /vendor/bundle/ruby/3.2.0/gems/logster-2.19.1/lib/logster/configuration.rb

Je ne comprends donc toujours pas pourquoi les logs de niveau info ne s’affichent pas dans /logs.

Il est clair que quelque chose filtre les logs de niveau info entre production.log et Logster.

2 « J'aime »

Si je comprends bien, il supprime les logs d’information et de débogage en mode production par conception. Blaming logster/lib/logster/rails/railtie.rb at main · discourse/logster · GitHub

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

D’un article de blog

En mode production, il agrège les erreurs similaires en identifiant les traces de pile, en écoutant les avertissements/erreurs et les messages fatals. L’intention est d’afficher une liste des problèmes d’application ouverts qui peuvent être résolus d’une manière ou d’une autre.

En mode développement, il fournit un flux complet de tous les logs produits par Rails (debug et supérieur). Cela présente des avantages significatifs par rapport à la console car vous avez un accès approprié aux traces de pile pour chaque ligne de log.

2 « J'aime »

Merci.
Cela semble logique pour le cas général.
Cependant, cela semble déraisonnablement restrictif et devrait être configurable pour des circonstances spéciales ?
Cela inclut les moments où vous avez des cas limites en production que vous souhaitez examiner.

1 « J'aime »