Wie greife ich auf Sinatras Logger außerhalb des Request Scope zu?

8

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?

    
Undistraction 22.01.2013, 16:38
quelle

2 Antworten

9

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:

%Vor%

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.

    
iain 22.01.2013, 17:14
quelle
1

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:

%Vor%

Und, RSpec mock:

%Vor%     
B Seven 09.06.2015 23:24
quelle

Tags und Links