log4php не будет работать должным образом
Вопрос
Таким образом, я недавно обнаружил, что пакет Log4 * был доступен для PHP и увидев это с нетерпением скачал последний из веб-сайта log4php и следовал инструкциям по установке. Инструкции указывают на то, что нужно загрузить пакет TAR, UNTRAR, и поместить следующий каталог на место по выбору: log4php / src / main / php
Поэтому я скопировал содержание log4php/src/main/php
в мой lib dir под lib / log4php.
В моем скрипте, по мере необходимости, я требовал класса «logger.php» и указал файл свойств для управления моими придателями. Файл свойств, log4php.properties, расположен на моей файловой системе на "/home1/ioforgec/ward/devlab/pnotes/config/log4php.properties".
Вот контент Logfile:
#
# 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
Итак, вот копия моего скрипта, который реализует (более или менее включает функциональность Log4PhPPPHP):
<?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);
}
}
?>
Чтобы проверить, что это работает надлежащим образом, следующие скрипты вызывают logutil.php, показанные выше:
#!/usr/bin/php
<?php
require_once("lib/utils/LogUtil.php");
LogUtil::logExample("example message");
?>
Итак, несмотря на настройку примера регистратора для форматирования сообщений как простое сообщение, несмотря на установку уровня регистратора к максимум Fatal, не только в декларации регистратора, но и в команде Threshold, распечатка к консоли смотрит на меня. Как корневой регистратор по умолчанию:
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
Я вижу оператор печати без простого форматирования, как указано, и я вижу два оператора печати, отладочную печать (которая никогда не должна напечатана из-за настройки фатального на конфигурации регистратора - Fatal намного выше, чем отладка)
Что на земле я делаю не так? Ive попробовал каждую комбинацию установки, которую я могу думать. У кого-нибудь есть предложения?
Редактировать - Обновить - это все еще проблема. Нет прогресса.
Редактировать2 - На самом деле? Никто на этом форуме не пытался использовать этот очень популярный пакет регистрации и его воплощение в качестве модуля PHP?
Я попробовал каждый мыслимый проспект, чтобы попытаться ответить на вопрос, включая список рассылки пользователя Log4Php.
Решение
Еще через многие другие часы манипулирования файлом конфигурации я обнаружил небольшой, но критически важный фактоид. Чтобы указать «logger», вы должны назвать его под иерархией «Logger» и его приложениями под «иерархией Appender» и т. Д., Например:
# 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
Моя ошибка состояла в том, чтобы увидеть имя иерархии корневого регистратора «log4php.rootLogger» и предполагая, что для того, чтобы назначить регистратор, нужно только имени значение «log4php.lognameLogger». К сожалению, это не оправдание, так как был примером, похоронен в документации. Я полагаю, найти его в 9+ часов лучше, чем совсем не :)
Благодаря тем, кто напомнил мне, что, чтобы быть сделана больше отладки работ, я ценил напоминание, чтобы продолжать пытаться