Question

Je récemment découvert que le log4 * package était disponible pour PHP et en voyant ce téléchargé avec impatience le dernier sur le site de log4php et a suivi les instructions d'installation. Les instructions indiquent que l'on est de télécharger le package tar, décompressez et placez le répertoire suivant dans un lieu de son choix: log4php / src / main / php

Par conséquent, j'ai copié le contenu de log4php/src/main/php dans ma lib dir sous lib / log4php.

Dans mon script, au besoin, je nécessaire la classe « Logger.php » et indique un fichier de propriétés pour gérer mes appenders. Le fichier de propriétés, log4php.properties, se trouve sur mon système de fichiers à « /home1/ioforgec/www/devlab/pnotes/config/log4php.properties ».

Voici le contenu du fichier journal:

#
# 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

Voici donc une copie de mon script qui implémente (plus ou moins « enveloppes » la fonctionnalité de 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);
    }
}
?>

Afin de tester que cela fonctionne correctement, le script suivant appelle la LogUtil.php ci-dessus:

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

Ainsi, malgré la configuration de l'enregistreur exemple pour formater les messages que le message clair, malgré le réglage du niveau de l'enregistreur à un maximum de FATAL, non seulement dans la déclaration de l'enregistreur, mais aussi dans la commande de seuil, l'impression à la console me semble comme l'enregistreur racine par défaut:

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

Je vois la déclaration d'impression sans la mise en forme ordinaire tel que spécifié, et je vois deux déclarations d'impression, l'impression de débogage (qui ne devrait jamais avoir imprimé en raison du réglage de FATAL sur la configuration de l'enregistreur - FATAL est beaucoup plus élevé que DEBUG)

Que diable suis-je tort? Ive a essayé toutes les combinaisons de configuration, je peux peut-être penser. Quelqu'un at-il des suggestions?

Modifier - Mise à jour - Ceci est encore un problème. Aucun progrès.

Edit2 - Vraiment? A personne sur ce forum essayé d'utiliser ce package de journalisation très populaire et son incarnation en tant que module PHP?

J'ai essayé tous les moyens imaginables pour essayer d'obtenir réponse à ma question, y compris la liste de diffusion de l'utilisateur log4php.

Était-ce utile?

La solution

Après beaucoup de beaucoup plus d'heures de manipulation du fichier de configuration que j'ai découvert une petite, mais d'une importance cruciale factoid. Pour spécifier un « enregistreur », vous devez le nommer sous la hiérarchie « logger » et ses appenders sous la « appender » hiérarchie, etc., etc. Par exemple:

# 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

Mon erreur a été de voir le nom de la hiérarchie de l'enregistreur racine « log4php.rootLogger » et en supposant que pour attribuer un enregistreur besoin nom qu'une valeur pour « log4php.lognameLogger ». Malheureusement, cela ne justifie pas car il y avait un exemple, enterré, dans la documentation. Je suppose que le trouver à 9+ heures est mieux que pas du tout:)

Merci à ceux qui me faisaient penser qu'il y avait plus de débogage du travail à faire, je remercie le rappel de continuer à essayer

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