В Magento 1, если вы хотите отправить сообщение в журналы, вы бы использовали статический метод в глобальном Mage
классе.
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Есть ли эквивалент в Magento 2? Я просмотрел сайт разработчиков документации и не увидел ничего очевидного. Есть эта статья для Inchoo , но она написана почти год назад, и с тех пор многое изменилось.
Как разработчик модуля Magento 2, если я хочу заменить код, как показано ниже, в Magento 1
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Какой минимум мне нужно сделать?
magento2
log
psr-logger
Алан Сторм
источник
источник
В magento2 вы также можете записывать в журналы, используя
Zend
библиотеку, как показано ниже:отредактированный
Вы также можете распечатать PHP-объекты и массивы, как показано ниже:
источник
PHP objects
не печатаю ...источник
Вам нужно вставить класс \ Psr \ Log \ LoggerInterface в конструктор для вызова объекта регистратора
Вывести строку вывода в debug.log
Вывести массив вывода в system.log
источник
Если вы хотите использовать регистратор по умолчанию, но пользовательский файл для ведения журнала (или другую пользовательскую логику), вам нужно использовать собственный обработчик регистратора:
Затем добавьте его в качестве обработчика где-то в вашем коде:
Шаг назад в удобстве ИМО
источник
$this->logger->info($message, $level);
- как вы говорите «использовать мой контекст»?Проще говоря, если вы не хотите создавать инъекцию зависимостей или что-либо еще, используйте приведенный ниже код, он сохранит журнал в
system.log
файлеВот и все..
источник
Нет, прямого эквивалента нет. Это немного сложно сейчас.
Смотрите: Вход в пользовательский файл в Magento 2
источник
Включите класс psr logger в ваш файл, используя use, а затем вызовите
addDebug()
метод. Это напечатает сообщение журнала вvar/log/debug.log
файлеисточник
ОБНОВЛЕНО: 19/08/2019
Если вы ищете элегантный пользовательский обработчик журналов, я рекомендую вам использовать виртуальные типы (для этого не нужно добавлять код PHP)
Вдохновленный из ответа Петар Dzhambazov и Halk , дамы и господа , я представил вам лучше и более короткий путь вместо дублированный пользовательского кода журнала все время.
ИСПОЛЬЗОВАНИЕ
Вот и все, никаких дополнительных файлов или строк PHP - используйте преимущества Magento 2: Виртуальные типы !!!
Надеюсь это поможет ;)
источник
В 2.2 есть одно обновление для логгера. Вы можете включить регистратор для производственного режима, запустив SQL:
Затем вы можете использовать
\Psr\Log\LoggerInterface
для печати журнала, как и выше ответы:источник
In the Magento admin panel, go to "Stores" -> "Configuration" -> "Advanced" -> "Developer" -> "Debug" -> "Log to File". Setting this to "Yes" will cause debug information to be logged to var/log/debug.log in your Magento application directory.
Внедрить
$logger
класс в конструктор.\Psr\Log\LoggerInterface $logger
Это достигается передачей $ logger в качестве аргумента.
Инициализировать
$logger
в конструктореВ функции внутри класса, который вы хотите войти, используйте строку ниже
источник
Если вам это нужно в вашем отдельном классе с пользовательским файлом журнала:
источник
Поместите код регистратора PSR в свой конструктор:
тогда вы можете использовать в своей функции, как:
источник