log4php не будет работать должным образом - PullRequest
1 голос
/ 19 октября 2010

Итак, я недавно обнаружил, что пакет log4 * доступен для PHP, и, увидев его, охотно скачал последнюю версию с веб-сайта log4php и следовал инструкциям по установке.В инструкциях указано, что нужно загрузить пакет tar, распаковать и поместить следующий каталог в любое место по своему выбору: log4php / src / main / php

Поэтому я скопировал содержимое log4php/src/main/php в свойlib dir в lib / log4php.

В моем скрипте, как требовалось, я требовал класс 'Logger.php' и указал файл свойств для управления моими приложениями.Файл свойств, log4php.properties, находится в моей файловой системе по адресу "/home1/ioforgec/www/devlab/pnotes/config/log4php.properties".

Вот содержимое файла журнала:

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

Итак, вот копия моего скрипта, который реализует (более или менее «оборачивает» функциональность 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);
    }
}
?>

Чтобы проверить, что это работает правильно, следующий скрипт вызывает LogUtil.php, показанный выше:

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

Итак, несмотря на настройку примера регистратора для форматирования сообщений как простого сообщения, несмотря на настройкууровень логгера до максимума FATAL, причем не только в объявлении логгера, но и в команде порога, вывод на консоль выглядит для меня как корневой логгер по умолчанию:

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

Я вижуоператор print без простого форматирования, как указано, и я вижу два оператора print, отладочную печать (которую никогда не нужно было печатать из-за настройки FATAL в конфигурации регистратора - FATAL НАМНОГО выше, чем DEBUG)

Чтона земле я делаю не так?Я попробовал каждую комбинацию настроек, о которой я только могу подумать.У кого-нибудь есть предложения?

Правка - Обновление - это все еще проблема.Нет прогресса.

Edit2 - Действительно?Неужели никто на этом форуме не пытался использовать этот очень популярный пакет ведения журналов и его воплощение в качестве модуля PHP?

Я пытался всеми возможными способами получить ответ на мой вопрос, включая список рассылки пользователя log4php.

1 Ответ

3 голосов
/ 20 октября 2010

После долгих часов работы с файлом конфигурации я обнаружил небольшой, но критически важный фактоид.Чтобы указать «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

Моя ошибка была в том, что я увидел rootимя иерархии logger 'log4php.rootLogger' и предполагается, что для назначения регистратора достаточно указать только значение для 'log4php.lognameLogger'.К сожалению, это не оправдание, так как в документации был похоронен пример.Полагаю, найти его в 9+ часов лучше, чем вовсе нет:)

Спасибо тем, кто напомнил мне, что предстоит выполнить больше отладочной работы, я был благодарен за напоминание продолжать попытки

...