@aksined_by
Php-developer

Формирование строки лога только если включен нужный уровень отладки?

Доброго времени суток. Столкнулся с проблемой времени выполнения некоторых скриптов в одном большом проекте. Хотел попробовать выиграть хоть пол секунды, сократив формирование строки для логирования. Логов очень много, вызов лога выглядит примерно вот так:
class SomeClass(){
    function someFunction(string $param1, string $param2, int $param3): bool{
        debugLog(
            'log-level-3',
            __METHOD__ ,
            ': start with arguments: ' .PHP_EOL. $param1 . PHP_EOL. $param2.PHP_EOL . $param3
        );
        // code
        $success = $this->doSomething();
        debugLog('log-level-3', __METHOD__, ': end ' . $success ? 'successfully' : 'failure');
        return $success;
    }
}


Возник вопрос: Как выполнить отложенное формирование строки в 3м параметре debugLog, что бы строка собиралась только в том случае, если 'log-level-3' включен в конфигурациях?

Хотел передавать в 3 параметр анонимную функцию, которая должна вернуть строку, но тогда очень сильно портится читаемость кода

class SomeClass(){
    function someFunction(string $param1, string $param2, int $param3): bool{
        debugLog(
            'log-level-3',
            __METHOD__ ,
            function() use ($param1, $param2, $param3){
                return ': start with arguments: ' .PHP_EOL. $param1 . PHP_EOL. $param2.PHP_EOL . $param3;
            }
        );
        // code
        $success = $this->doSomething();
        debugLog('log-level-3', __METHOD__, function() use ($success) { return ': end ' . $success ? 'successfully' : 'failure';});
        return $success;
    }
}


Проект очень большой, много работы с файлами. Проводили тесты на идентичных по железу серверах под linux и windows. На linux, тормоза при формировании документов несущественны, самый долгий - ~15 секунд. При работе под windows - скрипты на формирование документов могут работать иногда до ~90 секунд.

Есть идея попробовать немного ускорить работу, сократив огромное количество конкатенаций.

Вопросы:
1) Существует ли способ как-то красиво оформить такое логирование, что бы не потерять в читаемости?
2) Есть ли смысл бороться с сотнями конкатенаций чуть ли не в каждом запросе?

Пример реального вызова в том, как это существует сейчас:
5f0491bd6ea24472902176.png
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы