2009-09-10 5 views
4

J'ai trouvé comment faire taire le contenu d'une action en enveloppant tout dans la méthode de l'action dans un bloc logger.silence. Cependant, je reçois toujours l'appel de l'action qui apparaît dans le fichier journal.Comment couper complètement l'appel de l'action d'un contrôleur de rails

IE:

Processing DashboardController#update (for 66.201.17.166 at 2009-09-09 19:03:27) [GET] 
    Parameters: {"todos"=>{"user"=>"25", "sfu_type"=>""}} 
Completed in 1021ms (View: 439, DB: 438) | 200 OK [http://my.host.com/dashboard/update?todos%5Buser%5D=25&todos%5Bsfu_type%5D=] 

Je veux soit garder ce qui précède de se faire par écrit aux journaux tous ensemble, ou rediriger vers un fichier journal différent (c.-à-dashboard.log) de sorte qu'il cesse d'encombrer la production .fichier journal. Je reçois l'exemple ci-dessus écrit dans le journal chaque fois que l'appel ajax est mis à jour pour chaque utilisateur connecté. Cette mise à jour est effectuée toutes les 2 minutes pour que le fichier journal de production soit inondé de messages de journal inutilisables.

Répondre

7

réponse tardive, mais j'ai passé un peu de temps des interwebs chercher la réponse, ce qui est donc:

Dans le contrôleur qui contient l'action que vous voulez ignorer, remplacer la méthode de l'enregistreur et le retour les rails par défaut pour certaines actions, et un enregistreur personnalisé ou nul pour ceux qui nécessitent une manipulation spéciale. Je soupçonne qu'il y a un moyen plus facile, et j'aimerais entendre si elle existe.

+0

Vous êtes le gagnant! Cela a bien fonctionné .... merci! – Streamline

+1

ne fonctionne pas dans rails3, au moins pour moi –

+0

Semble fonctionner pour moi sur Rails 3, et aussi travailler lors de l'exécution: environnement de production localement, mais ne semble pas fonctionner sur Heroku. Plus spécifiquement, Heroku continue de produire les messages "Render". Des idées? –

0

Avez-vous défini votre niveau d'enregistrement de production?

config

> environnement> production.rb

config.log_level =: mettre en garde (par défaut: info)

+0

oui- quel que soit le niveau de journalisation est, vous obtenez toujours l'entrée pour le contrôleur/action dans le journal – Streamline

1

Les appels sont logger parsèment ActionController::Base. La seule façon que je peux penser est de singe patch un tas de méthodes et de vérifier le nom du contrôleur en question.

Peut-être dérogatoire this method est tout ce que vous devez faire. Pas certain. Bonne chance :)

+0

ce qui a probablement le seul disponible façon d'enlever la journalisation de cette information - devra enquêter à un certain point à voir - merci – Streamline

+0

FYI, juste fait quelque chose de similaire moi-même. Si vous remplacez la méthode d'instance 'logger' d'un contrôleur, vous allez désactiver la journalisation. –

0

Dans le contrôleur d'application vous pouvez remplacer l'enregistreur:

def log_error(exception) 
    #super(exception) 
    #do my logging here 
end 

Je l'utiliser pour me envoyer un courriel lorsque des erreurs se produisent dans une application critique.

+0

Ou je pourrais répondre à votre question au lieu d'écrire ce que je fais –

+0

Reuben, je pense que ce serait encore gérer la journalisation qui se passe après l'action du contrôleur est appelée vs modification de l'appel d'informations au contrôleur/action - correct? – Streamline

Questions connexes