Как включить общий журнал PHP и журнал запросов apache с помощью MAMP 5.1 - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть эта функция, которая регистрирует сообщения

function messageError($logDataJson, $file = null){
$logDataJson = is_string($logDataJson) ? $logDataJson : json_encode($logDataJson);
$logDataJson .= PHP_EOL;
$fe = fopen('php://stderr', 'w');
fwrite($fe, $file . $logDataJson );

}

, когда я бегу messageError(['shop'=>"1"]);, я вижу сообщение журнала {"shop":"1"}

, но когда я бегускрипт через http запрос я не вижу сообщения в /Applications/MAMP/logs/php_error.log файле.

в моем php.ini написано;Записывать ошибки в файл журнала (журнал для конкретного сервера, stderr или error_log (ниже));Как указано выше, вам настоятельно рекомендуется использовать протоколирование ошибок вместо;ошибка отображения на производственных сайтах.log_errors = On

я хочу вывести сообщение из файла messageError(['shop'=>"1"]); в /Applications/MAMP/logs/php_error.log и вывести messageLoger(['shop'=>"1"]); в /Applications/MAMP/logs/php.log

function messageLoger($logDataJson, $file = null){
$logDataJson = is_string($logDataJson) ? $logDataJson : json_encode($logDataJson);
$logDataJson .= PHP_EOL;
$fe = fopen('php://stdout', 'w');
fwrite($fe, $file . $logDataJson );

}

спасибо, любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Включить error_reporting(1) и использовать функцию error_log().Это должно решить вашу проблему.

0 голосов
/ 28 ноября 2018

php://output разрешить прямой доступ к соответствующему выходному потоку процесса PHP.чтобы записать в файл журнала, используйте php://stderr

или вы можете использовать функцию error_log.

подробнее здесь: https://secure.php.net/manual/en/wrappers.php.php

error_log function:https://secure.php.net/manual/en/function.error-log.php


пример:

function log(...$vars): void 
{
     foreach($vars as $var) {
         error_log(sprintf('[LOG][%s] : %s', date('F j, Y, g:i a'), json_encode($var)));
     }
}

log('Hello');
log('a', 'b', 'c');
log([1,2,3]);

ОБНОВЛЕНИЕ:

, поскольку вы уже используете php://stderr, проверьтефайл php.ini и убедитесь, что для файла журнала установлено error_log.

пример: error_log = /path/to/apache/php/log.txt

, если вы хотите регистрировать ошибки в системном журнале или в журнале событий Windows Server, используйтеsyslog.

пример: error_log = syslog

...