W Magento 1, jeśli chcesz wysłać wiadomość do dzienników, użyjesz metody statycznej dla Mage
klasy globalnej .
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Czy istnieje odpowiednik Magento 2? Mam google pośrednictwem serwisu docs dev i nie coś oczywistego, że wyskakuje widział. Jest ten artykuł o Inchoo , ale pochodzi z prawie roku temu i od tego czasu wiele się zmieniło.
Jako programista modułu Magento 2, jeśli chcę zastąpić kod podobny do następującego w Magento 1
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Jakie minimum muszę zrobić?
magento2
log
psr-logger
Alan Storm
źródło
źródło
W magento2 możesz również pisać do dzienników, korzystając z
Zend
biblioteki, jak poniżej:Edytowane
Możesz także wydrukować obiekty i tablice PHP jak poniżej:
źródło
PHP objects
nie drukują ...źródło
Musisz wstrzyknąć klasę \ Psr \ Log \ LoggerInterface do konstruktora, aby wywołać obiekt rejestrujący
Aby wydrukować ciąg Wyjście w pliku debug.log
Aby wydrukować dane wyjściowe z tablicy w pliku system.log
źródło
Jeśli chcesz użyć domyślnego programu rejestrującego, ale niestandardowego pliku do logowania (lub innej niestandardowej logiki), musisz użyć niestandardowej procedury obsługi programu rejestrującego:
Następnie dodaj go jako moduł obsługi do kodu:
Cofnij się wygodnie IMO
źródło
$this->logger->info($message, $level);
- jak mówisz „użyj mojego kontekstu”?W prosty sposób, jeśli nie chcesz tworzyć wstrzykiwania zależności lub cokolwiek innego użyć poniżej kodu, zapisze
system.log
plik dziennikaTo wszystko..
źródło
Nie, nie ma bezpośredniego odpowiednika. Teraz jest to trochę skomplikowane.
Zobacz: Logowanie do niestandardowego pliku w Magento 2
źródło
Dołącz klasę psr logger do swojego pliku, używając metody use, a następnie call
addDebug()
. Spowoduje to wydrukowanie komunikatu dziennika wvar/log/debug.log
plikuźródło
AKTUALIZACJA: 19/08/2019
Jeśli szukasz eleganckiego niestandardowego modułu obsługi dzienników, zalecamy użycie typów wirtualnych (które nie wymagają dodawania kodu PHP)
Zainspirowany odpowiedzią Petara Dzhambazova i halk , panie i panowie, przedstawiłem wam lepszą i krótszą drogę zamiast zduplikowanego niestandardowego kodu dziennika.
STOSOWANIE
To wszystko, bez dodatkowych plików PHP lub linii - skorzystaj z zalet Magento 2: Typy wirtualne !!!
Mam nadzieję że to pomoże ;)
źródło
Jest jedna aktualizacja dla rejestratora w wersji 2.2. Możesz włączyć rejestrator w trybie produkcyjnym, uruchamiając SQL:
Następnie możesz użyć
\Psr\Log\LoggerInterface
dziennika wydruku tak jak powyższe odpowiedzi:źródło
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.
Inject
$logger
class in constructor\Psr\Log\LoggerInterface $logger
Osiąga się to poprzez przekazanie $ logger jako argumentu.
Zainicjuj
$logger
w konstruktorzeW funkcji w klasie, w której chcesz się zalogować, użyj poniższego wiersza
źródło
Jeśli potrzebujesz go w ramach jednej klasy z niestandardowym plikiem dziennika:
źródło
Umieść kod rejestratora PSR w swoim konstruktorze:
możesz użyć w swojej funkcji, takich jak:
źródło