Question

I ai une application PHP contenant plusieurs modules et les différents paramètres au sein de chaque module. Je voudrais activer la journalisation à l'aide log4php, mais chaque module a des paramètres différents (par exemple. Niveau de journal, le fichier journal, etc). Certains de ces paramètres doivent être modifiés à la volée par les utilisateurs finaux (niveau de journal), et j'aimerais stocker ces propriétés dans la base de données.

En ce moment je peux définir logLevel dynamiquement. Je ne peux pas déterminer comment définir d'autres propriétés dynamiques bien. Documentation sur la configuration de log4php fait presque exclusivement via les propriétés / fichiers XML - mais il dit que tous les paramètres peuvent être modifiés par programmation.

Est-ce qu'un fait quelque chose comme ça? Si oui, comment puis-je le faire? Je l'ai regardé à travers la documentation http://incubator.apache.org/log4php/index. html , mais j'ai besoin de plus d'aide.

Pour clarifier - je ne veux pas utiliser les fichiers de configuration, les utilisateurs finaux n'auront pas accès direct à ces derniers. Je fournirai une extrémité avant pour modifier certains paramètres de journalisation, et tous les paramètres seront stockés dans la base de données.

Était-ce utile?

La solution

En regardant les API Docs me dit qu'ils utilisent adaptateurs Config et un modèle de stratégie pour configurer les enregistreurs. Les adaptateurs ont une seule méthode configure , qui est appelé par le principal Logger. Il y a un LoggerConfiguratorPhp , qui va lire / inclure un fichier PHP retour un tableau PHP régulière. Je ne pouvais imaginer ce qui pourrait facilement être modifié pour accepter un tableau retourné à partir de la base de données à la place. Jetez un oeil sur le code source de cette classe pour le point de départ. Ce que vous voulez créer un LoggerConfiguratorDB, que vous pouvez ensuite passer à la classe principale de l'enregistreur comme ceci:

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

Je ne ai jamais travaillé avec Log4Php, ce qui est en train de prendre en regardant l'API. Je n'ai absolument aucune idée, comment le nouvel adaptateur devrait ressembler. Mais peut-être que cela vous pénètre dans la bonne direction.

Si vous parvenez à trouver quelque chose pourquoi ne pas faire un don au projet:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top