Я новичок в log4php, и я пытаюсь реализовать это в моей пользовательской среде. Мне удалось получить все запросы БД в файл. то, что я хочу сделать сейчас, это зарегистрировать его таким образом, чтобы я мог идентифицировать каждого клиента, чтобы я мог просматривать отладочный браузер, не видя всех других клиентов в одном файле.
XML
<configuration xmlns="http://logging.apache.org/log4php/">
<appender name="default" class="LoggerAppenderConsole" />
<appender name="default" class="LoggerAppenderFile">
<layout class="LoggerLayoutSimple" />
<param name="file" value="/var/SP/oiadm/docroot/cache/my.log" />
<param name="append" value="true" />
</appender>
<root>
<level value="debug" />
<appender_ref ref="default" />
</root>
</configuration>
php db class
if (defined ( 'OI_ENV' ) && OI_ENV == 'DEVELOPMENT') {
$debugtoolbar = array (
"stacktrace" => $stacktrace,
"sql" => $debug_sql,
"start" => $debug_sql_start,
"end" => $debug_sql_end
);
/*
if ( isset($_SESSION ['OI_DEBUG'] ['debugtoolbar'] ['database']) && count ( $_SESSION ['OI_DEBUG'] ['debugtoolbar'] ['database'] ) > 9) {
$_SESSION ['OI_DEBUG'] ['debugtoolbar'] ['database'] = null;
}
$_SESSION ['OI_DEBUG'] ['debugtoolbar'] ['database'] [] = $debugtoolbar;
*/
$log = $_SESSION['OI_DEBUG']['log'];
if(empty($log)){
// Create the logger
// Include and configure log4php
\Logger::configure(BASE_DIR . 'config.xml');
// The __CLASS__ constant holds the class name, in our case "Foo".
// Therefore this creates a logger named "Foo" (which we configured in the config file)
$log = \Logger::getLogger(__CLASS__);
}
$log->debug(json_encode($debugtoolbar));
}
ОБНОВИТЬ
Я использую идентификатор сеанса сейчас, но это работает, только если пользователь вошел в систему
if($_COOKIE['PHPSESSID']){
$log = $_SESSION['OI_DEBUG']['log'];
if(empty($log)){
// Create the logger
// Include and configure log4php
\Logger::configure(BASE_DIR . 'config.xml');
// The __CLASS__ constant holds the class name, in our case "Foo".
// Therefore this creates a logger named "Foo" (which we configured in the config file)
$log = \Logger::getLogger(__CLASS__);
}
$appender = new \LoggerAppenderRollingFile("default");
$appender->setFile(BASE_DIR . "cache/log4php_".$_COOKIE['PHPSESSID'].".log", true);
$appender->activateOptions();
$log->removeAllAppenders();
$log->addAppender($appender);
$log->debug(json_encode($debugtoolbar));
}
Задача ещё не решена.
Других решений пока нет …