Pregunta

Tengo una aplicación PHP que contiene múltiples módulos y diversos ajustes dentro de cada módulo. Me gustaría habilitar el registro usando log4php, pero cada módulo individual tiene una configuración diferente (es decir. Nivel de registro, el archivo de registro, etc). Algunos de estos ajustes hay que cambiar sobre la marcha por los usuarios finales (nivel de registro), y me gustaría para almacenar estas propiedades en la base de datos.

En este momento puedo configurar dinámicamente nivel de registro. No puedo determinar cómo establecer otras propiedades de forma dinámica sin embargo. Documentación de la configuración del log4php se realiza casi exclusivamente a través de archivos de propiedades / xml - a pesar de que dice que todos los ajustes se pueden cambiar mediante programación.

ninguna ha hecho algo como esto? Si es así, ¿cómo lo hago? He mirado a través de la documentación en http://incubator.apache.org/log4php/index. html , pero necesito más ayuda.

Para aclarar - no quiero utilizar los archivos de configuración, ya que los usuarios finales no tendrán acceso directo a éstas. Voy a ofrecer una interfaz para cambiar ciertas opciones de registro, y todos los ajustes se almacenarán en la base de datos.

¿Fue útil?

Solución

En cuanto a las API Docs me dice que están utilizando adaptadores de configuración y un patrón de estrategia para configurar los registradores. Los adaptadores tienen un único método configurar , que es llamada por el principal registrador. Hay una LoggerConfiguratorPhp , que va a leer / incluir un archivo PHP regresar una matriz de PHP regular. Me podía imaginar esto podría ser fácilmente modificado para aceptar una matriz devuelta por la base de datos en su lugar. Tener un vistazo al código fuente de esta clase de punto de partida. Lo que se quiere crear es un LoggerConfiguratorDB, que luego se puede pasar a la clase principal registrador de la siguiente manera:

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

Nunca trabajé con Log4Php y esto es sólo asumiendo mirando a la API. No tengo absolutamente ninguna pista, cómo el nuevo adaptador tendría que ser similar. Pero tal vez esto te mete en la dirección correcta.

Si logra llegar a algo por qué no donar al proyecto:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top