Pregunta

Así que he descubierto recientemente que el log4 * paquete estaba disponible para PHP y al ver esto con entusiasmo descargado la última versión de la página web log4php y siguió las instrucciones de instalación. Las instrucciones indican que uno es para descargar el paquete de alquitrán, untar, y coloque el siguiente directorio en un lugar de uno de elección: log4php / src / main / php

Por lo tanto copiar el contenido de log4php/src/main/php en mi dir lib en lib / log4php.

En mi escritura, según sea necesario, que requiere la clase 'Logger.php' e indicó un archivo de propiedades para gestionar mis appenders. El archivo de propiedades, log4php.properties, se encuentra en mi sistema de archivos en "/home1/ioforgec/www/devlab/pnotes/config/log4php.properties".

Aquí está el contenido del archivo de registro:

#
# Example Logger
#
log4php.appender.EA1 = LoggerAppenderConsole
log4php.appender.EA1.target = STDOUT
log4php.appender.EA1.layout = LoggerLayoutPattern
log4php.appender.EA1.ConversionPattern = "%m"
log4php.appender.EA1.threshold = FATAL
log4php.exampleLogger = FATAL, EA1

Así que aquí es una copia de mi script que implementa (más o menos '' envuelve la funcionalidad log4php):

<?php

require_once('/home1/ioforgec/www/devlab/pnotes/lib/log4php/Logger.php');

class LogUtil
{
    public $logger;

    public $properties_file = "/home1/ioforgec/www/devlab/pnotes/config/log4php.properties";

    public static function logExample($msg)
    {
        Logger::configure($properties_file);
        $logger = Logger::getLogger("example");
        $logger->debug("Shouldnt see this print because of config max level FATAL");
        $logger->fatal($msg);
    }
}
?>

Con el fin de que esta prueba está funcionando correctamente, el siguiente script llama a la LogUtil.php mostrado arriba

#!/usr/bin/php
<?php
require_once("lib/utils/LogUtil.php");
LogUtil::logExample("example message");
?>

Así que, a pesar de la configuración del ejemplo registrador para dar formato a los mensajes como el mensaje normal, a pesar de la configuración del nivel del registrador a un máximo de FATAL, no sólo en la declaración registrador, sino también en el orden de umbral, la impresión a la consola me parece que el registrador raíz predeterminado:

Mon Oct 18 20:30:05 2010,705 [827] DEBUG example - Shouldnt see this print because of config max level FATAL
Mon Oct 18 20:30:05 2010,711 [827] FATAL example - example message

Veo la sentencia print sin el formato normal como se especifica, y veo dos declaraciones de impresión, la impresión de depuración (que nunca debería haber impreso debido a la configuración de los mortales en la configuración del registrador - FATAL es mucho mayor que DEBUG)

¿Qué diablos estoy haciendo mal? He intentado todas las combinaciones de configuración que posiblemente se pueda imaginar. ¿Alguien tiene alguna sugerencia?

Editar - Actualización - Este sigue siendo un problema. No hay progreso.

Edit2 - ¿En serio? No tiene a nadie en este foro tratado de utilizar este paquete de registro muy popular y su encarnación como un módulo PHP?

He intentado todas las vías imaginables para tratar de obtener mi pregunta respondió, incluyendo la lista de correo del usuario log4php.

¿Fue útil?

Solución

Después de muchas muchas más horas de manipular el archivo de configuración que he descubierto un pequeño hecho real, sin embargo, de importancia crítica. Con el fin de especificar un 'registrador' debe nombrarlo bajo la jerarquía 'logger' y sus appenders bajo el 'appender' jerarquía, etc, etc Por ejemplo:

# for the 'console' logger named 'example' we first define the appender:
log4php.appender.consoleAppender = LoggerAppenderConsole
log4php.appender.consoleAppender.target = STDOUT
log4php.appender.consoleAppender.layout = LoggerLayoutSimple

# we then assign the appender and the minimum log level to the logger:
log4php.logger.example = WARN, consoleAppender

Mi error fue ver el nombre de la jerarquía registrador de la raíz 'log4php.rootLogger' y suponiendo que con el fin de asignar un registrador necesidad de un único nombre de un valor para 'log4php.lognameLogger'. Lamentablemente esto no es excusa ya que era un ejemplo, enterrado, en la documentación. Supongo que para encontrarlo al 9+ horas es mejor que nada:)

Gracias a los que me recordaron que había más de depuración trabajo por hacer, me gustó el recordatorio para seguir intentando

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