2016-03-21 13 views
0

Ich möchte Schweregrad ohne Neukompilierung anpassen, so dass ich init_from_stream zu Schweregrad aus Datei lesen. Andere Optionen Ich brauche keine Laufzeitänderung, daher wird ihre Einstellung wie zuvor von der boost.log API vorgenommen.boost.log Config Log-Schweregrad von Config-Datei

Die Konfigurationsdatei ist:

[Core] 
DisableLogging=false 
Filter="%Severity% >= 0" 

Der Code ist:

std::ifstream file("log_setting.ini"); 
boost::log::init_from_stream(file); 
boost::log::register_simple_formatter_factory< severity_level, char >("Severity"); 
// following is same as before(all setting is by calling API, and comment out severity settings) 
boost::shared_ptr<boost::log::core> core = boost::log::core::get(); 
core->set_exception_handler(boost::log::make_exception_suppressor()); 
//add and set sinks 

Aber ich fand die init von Datei mit "traditioneller API Einstellung" exklusiv scheint, wenn ich init_from_stream hinzufügen, gibt es nichts ausloggen.

Meine Anforderung ist Verwendung Einstellung Datei, um einige Teile der Parameter zu steuern, die ich brauche Laufzeit ändern, aber nicht alle von ihnen.

Antwort

1

Sie müssen die Formatierungsfactory vor registrieren Sie verwenden den Formatierungsparser (der verwendet wird, wenn Sie den Formatierer aus der Einstellungsdatei analysieren).

Die Funktion init_from_stream ist nicht exklusiv in Bezug auf die Bibliotheksfunktionen, aber sie eignet sich kaum für Laufzeitaktualisierungen von Protokollierungseinstellungen. Was auch immer es in den Einstellungen erkennt, es fügt dem Protokollierungskern hinzu, ob diese Senken zuvor hinzugefügt wurden oder nicht.

Sie müssen einen eigenen Mechanismus zum Aktualisieren der Protokollierungskonfiguration implementieren. Sie können die Datei settings parser verwenden, um die Einstellungsdatei zu lesen. Sie müssen jedoch die Senken im Auge behalten, die Sie dem Kern hinzufügen, und die Senken selbst aus dem Einstellungscontainer initialisieren.

+0

Also das Design-Ziel von init_from_stream ist init-Protokoll aus Datei ändern Sie Einstellungen des aktuellen Protokolls – jean

Verwandte Themen