Können die Protokollebenen von Log :: Log4perl dynamisch geändert werden, ohne die Konfiguration zu aktualisieren?

8

Ich habe eine Mason-Vorlage, die unter mod_perl ausgeführt wird, die Log :: Log4perl verwendet.

Ich möchte den Log-Level eines bestimmten Appenders ändern, aber das Ändern der Konfiguration ist zu umständlich, da es unseren Bereitstellungsprozess durchlaufen müsste, um live zu gehen.

Gibt es eine Möglichkeit, die Protokollierungsstufe eines Appenders zur Laufzeit nach dem Start von Apache zu ändern, ohne die Konfigurationsdatei zu ändern, und sich diese Änderung dann auf neue Apache-Threads auswirkt?

    
Will Sheppard 10.05.2011, 16:05
quelle

2 Antworten

11

Wenn Sie die Log-Level-Konstanten von Log::Log4perl::Level importiert haben, können Sie Folgendes tun:

%Vor%

Dies ist im Ändern der Log-Level auf einem Logger Abschnitt in der Log::Log4perl docs .

    
CanSpice 10.05.2011, 16:12
quelle
2

Es scheint irgendwie hacky zu mir, aber es funktioniert:

$Log::Log4perl::Logger::APPENDER_BY_NAME{SCREEN}->threshold($DEBUG);

Und um es dynamischer zu machen, könnten Sie eine Variable für den Namen und die Ebene des Appenders übergeben.

%Vor%     
undefinedvariable 28.04.2014 15:35
quelle