2012-09-19 4 views
1

Donc, une petite question simple. Chaque fois que j'effectue une transaction avec DataMapper dans un de mes « get » ou blocs « post », je reçois la sortie à la recherche quelque chose comme ça ...Comment faire pour désactiver DataMapper dans Sinatra

core.local - - [19/Sep/2012:09:04:54 CEST] "GET /eval_workpiece/state?id=24 HTTP/1.1" 200 4 
- -> /eval_workpiece/state?id=24 

Il est un peu trop bavard à mon goût. Puis-je désactiver ce retour d'information?

Répondre

1

Pour couper toute l'exploitation forestière:

DataMapper.logger = nil 

Pour changer verbosité:

DataMapper.logger.set_log(logger, :warn) # where logger is Sinatra's logging object 

D'autres niveaux sont :fatal => 7, :error => 6, :warn => 4, :info => 3, :debug => 0 (http://rubydoc.info/gems/dm-core/1.1.0/DataMapper/Logger)

2

Ce n'est pas DataMapper exploitation forestière, c'est l'exploitation forestière fait par le serveur WEBrick, qui logs all requests using these two formats by default.

(Notez que n'est pas Rack journalisation soit, bien que le Rack :: CommonLogger utilise le même format (ou au moins très similaire). La manière la plus simple d'arrêter ceci serait de passer à un autre serveur qui n'ajoute pas sa propre journalisation, telle que Thin.

Si vous souhaitez continuer à utiliser WEBrick, vous devez trouver un moyen de lui transmettre des options à partir de votre application Sinatra. La gemme Sinatra publiée (1.3.3) ne permet pas un moyen facile de le faire, mais le current master allows you to set the :server_options setting which Sinatra will then pass on. Donc, à l'avenir, vous devriez être en mesure de le faire:

set :server_settings, {:AccessLog => []} 

afin de faire taire WEBrick.

Pour l'instant vous pouvez ajouter quelque chose comme ça à la fin de votre fichier application (je suppose que vous lancer votre application avec quelque chose comme ruby my_app_file.rb):

disable :run 
Sinatra::Application.run! do |server| 
    server.config[:AccessLog] = [] 
end 
0

Si vous utilisez avec ActiveSupport, vous pouvez utiliser l'extension du noyau:

quietly { perform_a_noisy_task } 

Cette temporairement se fixe STDOUT et SDTERR/dev/null pour la durée du bloc. Puisque vous ne voulez pas supprimer toutes les sorties , vous pouvez théoriquement faire:

with_warnings(:warn) { # or :fatal or :error or :info or :debug 
    perform_a_noisy_task 
} 

et les messages appropriés seront supprimés. (NB: je dis 'théoriquement' parce que l'utilisation de with_warnings m'a donné une erreur apparemment sans rapport dans mon environnement Padrino/DataMapper.) YMMV.)

Questions connexes