Domanda

Ho un'applicazione PHP contenente più moduli e varie impostazioni all'interno di ogni modulo. Mi piacerebbe attivare la registrazione utilizzando log4php, ma ogni singolo modulo ha le impostazioni differenti (es. Livello di log, file di log, ecc). Alcune di queste impostazioni devono essere cambiate al volo dagli utenti finali (livello di log), e mi piacerebbe per memorizzare queste proprietà nel database.

In questo momento posso impostare LogLevel dinamicamente. Non riesco a determinare come impostare altre proprietà in modo dinamico però. La documentazione della configurazione del log4php è fatto quasi esclusivamente tramite le proprietà dei file / XML - se si dice tutte le impostazioni possono essere modificate a livello di codice.

ha qualche fatto qualcosa di simile? Se sì, come posso fare così? Ho guardato attraverso la documentazione a http://incubator.apache.org/log4php/index. html , ma ho bisogno di più aiuto.

Per chiarire - non voglio usare i file di configurazione, come gli utenti finali non avranno accesso diretto a questi. Mi impegno a fornire un front-end per modificare alcune impostazioni di registrazione, e tutte le impostazioni verranno memorizzate nel database.

È stato utile?

Soluzione

Guardando la documentazione API mi dice che stanno utilizzando adattatori di configurazione e un modello di strategia per configurare le logger. Gli adattatori hanno un unico metodo configurazione , che è chiamato dal principale logger. C'è un LoggerConfiguratorPhp , che leggerà / include un file PHP ritorno un array PHP regolare. Potevo immaginare questo potrebbe essere facilmente modificato per accettare una matrice restituita dal database, invece. Date un'occhiata al codice sorgente di questa classe per punto di partenza. Che cosa si vuole creare è un LoggerConfiguratorDB, che si può poi passare alla classe Logger principale in questo modo:

$configurator = dirname(__FILE__).'/../resources/configurator_db.php';
Logger::configure( $configurator, 'LoggerConfiguratorDb');

Non ho mai lavorato con Log4Php e questo è solo presupposto, cercando in API. Non ho assolutamente idea, come la nuova scheda dovrebbe assomigliare. Ma forse questo ti porta nella giusta direzione.

Se si riesce a trovare qualcosa perché non donare al progetto:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top