Es scheint, dass Sinatras Logger nur in Request-Handlern verfügbar ist (Siehe Ссылка ), aber was ist, wenn ich es verwenden möchte? ein Logger an anderen Orten, zum Beispiel in Hilfsmethoden oder im configure-Hook? Ist der Sinatra-Logger auf andere Weise verfügbar?
Die Dokumente geben einige Beispiele zum Geltungsbereich, aber Sie können den Helfer logger
in Methoden sehen Definiert im Block helper
, da der Hilfsblock den Anwendungsbereich hat. Innerhalb von configure ist es nicht verfügbar, aber ich tendiere dazu, meine eigene Protokollierung in der rackup-Datei als eine Konstanten- oder Klasseninstanzvariable einzurichten, und dann ist sie innerhalb von configure (und anderswo) verfügbar. Als Beispiel für eine einzige Anwendung:
Ein Beispiel als Klasseninstanzvariable als besser "global":
%Vor%und dann verwenden, wo immer nötig:
%Vor%oder in einer Klasse:
%Vor%Sinatra kommt auch (seit 1.3) mit einem Helfer zum Loggen , und hier ist ein Rezept für die Protokollierung in STDOUT und eine Datei, die Sie auch nützlich finden können.
Die angenommene Antwort funktionierte nicht ganz für mich, also kam ich auf Folgendes:
%Vor% suppress_logging
ist nützlich, um die Spezifikationen ruhig zu halten.
In der App init:
%Vor%Aus einer Anfrage:
%Vor% Von einer Klasse, die keinen Zugriff auf logger
hat:
Und, RSpec mock:
%Vor%