Magento 2 рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдореЙрдбреНрдпреВрд▓реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ Magento 1 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд▓реЙрдЧрд┐рдВрдЧ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ рдореБрджреНрджреЗ рдХреЗ рддрдХрдиреАрдХреА рдкрдХреНрд╖ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЕрд░реНрдерд╛рддреН рдбреЗрдЯрд╛ рд▓реЙрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЙрдЧ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ, рдФрд░ рдореЛрдиреЛрд▓реЙрдЧ рдХреНрдпрд╛ рд╣реИред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛
рдПрдХрд▓рд╛рдк
Magento 2 рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдорд╛рдирдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓реЙрдЧрд┐рдВрдЧ
рдПрдХ рдХрд╕реНрдЯрдо рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓реЙрдЧрд┐рдВрдЧ
рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдирд╛
VirtualType рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдирд╛
рдлрд╛рд╕реНрдЯ рдбреЗрдЯрд╛ рд▓реЙрдЧрд┐рдВрдЧ
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХрд▓рд╛рдк
рдЖрдЗрдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрди рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ - рдореЛрдиреЛрд▓реЙрдЧ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИред
рдореЛрдиреЛрд▓реЙрдЧ - рдпрд╣ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП PSR-3 рдорд╛рдирдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореЛрдиреЛрд▓реЙрдЧ рд╣реИ рдЬреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП Magento 2 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреАрдПрд╕рдЖрд░ -3 , рдмрджрд▓реЗ рдореЗрдВ, рдПрдХ рдорд╛рдирдХ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЙрдЧрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдХрд░рддрд╛ рд╣реИред
PSR-3 рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЧрдпрд╛1. рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ (рд╡рд╕реНрддреБ) рдХреЛ \ Psr \ Log \ LoggerInterface рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
2. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ рд╣реИрдВ (рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЗрдВрдЧрд┐рдд):
рдЖрдкрд╛рддрдХрд╛рд▓реАрди - рдкреНрд░рдгрд╛рд▓реА рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИред
ALERT - рддреБрд░рдВрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг: рд╕рдВрдкреВрд░реНрдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдбрд╛рдЙрди, рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрдиреБрдкрд▓рдмреНрдз, рдЖрджрд┐ред
рдХреНрд░рд┐рдЯрд┐рдХрд▓ - рдЧрдВрднреАрд░ рд╕реНрдерд┐рддрд┐ред рдЙрджрд╛рд╣рд░рдг: рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдШрдЯрдХ рдЕрдиреБрдкрд▓рдмреНрдз, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЕрдкрд╡рд╛рджред
рддреНрд░реБрдЯрд┐ - рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрддреНрдХрд╛рд▓ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдЪреЗрддрд╛рд╡рдиреА - рдРрд╕реА рдЕрд╕рд╛рдзрд╛рд░рдг рдШрдЯрдирд╛рдПрдВ рдЬреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдкрджрд╛рд╡рдирдд рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧред
рд╕реВрдЪрдирд╛ - рд╕рд╛рдорд╛рдиреНрдп рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛рдПрдБред
рдЬрд╛рдирдХрд╛рд░реА - рджрд┐рд▓рдЪрд╕реНрдк рдШрдЯрдирд╛рдУрдВред рдЙрджрд╛рд╣рд░рдг: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ, SQL рд▓реЙрдЧред
DEBUG - рд╡рд┐рд╕реНрддреГрдд рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реАред
3. рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреА рдЕрдкрдиреА рд╡рд┐рдзрд┐ рд╣реИ (рдбрд┐рдмрдЧ, рд╕реВрдЪрдирд╛, рд╕реВрдЪрдирд╛, рдЪреЗрддрд╛рд╡рдиреА, рддреНрд░реБрдЯрд┐, рдорд╣рддреНрд╡рдкреВрд░реНрдг, рд╕рддрд░реНрдХ, рдПрдорд░рдЬреЗрдВрд╕реА / рдЖрдкрд╛рддрдХрд╛рд▓) рдФрд░ рдПрдХ рд▓реЙрдЧ рд╡рд┐рдзрд┐ рднреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ рд▓реЗрддреА рд╣реИред
4. рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдРрд╕реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВ рдЬреЛ __toString () рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ (рдпрд╛рдиреА, рдЖрдкрдХреЛ рдкреНрд░рд┐рдВрдЯ_r ($ рд╕рдВрджреЗрд╢, рд╕рддреНрдп) рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
5. рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХ $ рд╕рдВрджрд░реНрдн рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВ рдЬреЛ рд▓реЙрдЧ рдХреЛ рдкреВрд░рдХ рдХрд░рддреА рд╣реИред
6. рд╕рдВрджреЗрд╢ рдореЗрдВ $ рд╕рдВрджрд░реНрдн рд╕рд░рдгреА рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд╛рд░реВрдк {рдирд╛рдо} рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ рдирд╛рдо -> $ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рд░рдгреА рдХреА рдХреБрдВрдЬреА рд╣реИред
рдореЛрдиреЛрд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
use Monolog\Logger; use Monolog\Handler\StreamHandler; use Monolog\Formatter\HtmlFormatter;
рдореЛрдиреЛрд▓реЙрдЧ рдХреЗ рдХрд╛рдо рдХреА рдореБрдЦреНрдп рдмрд╛рддреЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛:
рдЪреВрдВрдХрд┐ PSR-3 рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрд╛рда рдореЗрдВ рд╕реНрд╡рдд: рд╕реБрдзрд╛рд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЛрдиреЛрд▓реЙрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ -> рдПрдорд░реНрдЬ ('рдЯреЗрд╕реНрдЯ 1111 {рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░}', ['рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░' => 'рдлреВ']] рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ
[2019-08-12 02:57:52] main.EMERGENCY: рдЯреЗрд╕реНрдЯ 1111 {рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░} {"рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░": "рдлреВ"} []
рдХрд╛рдо рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░реЛрд╕реЗрд╕рд░ - \ Monolog \ Processor \ PsrLogMessageProcessor рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдореЛрдиреЛрд▓реЙрдЧ рдХреЗ рдкрд╛рд╕ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝реЙрд░реНрдореЗрдЯрд░, рдкреНрд░реЛрд╕реЗрд╕рд░, рд╣реИрдВрдбрд▓рд░ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред рдЖрдк рдпрд╛ рддреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВред
Magento 2 рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрд╡рд┐рдзрд╛рдПрдБ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Magento рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЖрдк рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░рд╕реНрддреБрдд рдЙрджрд╛рд╣рд░рдг рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдлрд╕реЛрд╕, рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ "рдЕрдкрдиреА рдЦреБрдж рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЙрдЧ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред" рдЗрд╕рд▓рд┐рдП, рдЖрдЗрдП рд╕рдм рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭреЗрдВред
Magento 1 рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ, рд╢рд╛рдпрдж рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдиреЗ Mage :: рд▓реЙрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдХреЛрдб рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрд▓рдмреНрдз рдерд╛ рдФрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ Mage :: рд▓реЙрдЧ ('ALARM!', Null, 'api.log') рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ var / log / api.log рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдлрд╝реЙрд░реНрдо рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рдерд╛
2019-08-12T01:00:27+00:00 DEBUG (7): ALARM!
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рд░реВрдк:% рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк %% рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдЕрдирд╛рдо% (% рдкреНрд░рд╛рдердорд┐рдХрддрд╛%):% рд╕рдВрджреЗрд╢%редрдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдореИрдЧреЗрдВрдЯреЛ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП 2. рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЖрдк рдЗрд╕ $ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ -> _ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛-> рдЬрд╛рдирдХрд╛рд░реА ('рдЕрд▓рд╛рд░реНрдо!'); (рдпрджрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдореЗрдВ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА)ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ var / log / system.log рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ
[2019-08-12 02:56:43] main.INFO: ALARM! [] []
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рд░реВрдк [% рдбреЗрдЯрд╛рдЗрдо%]% рдЪреИрдирд▓% рд╣реИред% Level_name%:% рд╕рдВрджреЗрд╢ %% рд╕рдВрджрд░реНрдн %% рдЕрддрд┐рд░рд┐рдХреНрдд%рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ (_logger рдпрд╛ logger) рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ \ Psr \ Log \ LoggerInterface рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ $ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╕рдВрдкрддреНрддрд┐ ( PSR-2 рдЦрдВрдб 4.2 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдФрд░ Magento рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░) рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред ред
Magento 1 рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред
1. рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░редрд▓рд┐рдЦрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреЙрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
$this->_logger->{level}($message, $context = []);
1) рдЬрд╣рд╛рдБ {рд▓реЗрд╡рд▓} рд╣реИ, PSR-3 рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ (рдбреАрдмрдЧ, рд╕реВрдЪрдирд╛, рд╕реВрдЪрдирд╛, рдЪреЗрддрд╛рд╡рдиреА, рддреНрд░реБрдЯрд┐, рдХреНрд░рд┐рдЯрд┐рдХрд▓, рдЕрд▓рд░реНрдЯ, рдЗрдорд░реНрдЬ / рдЗрдорд░рдЬреЗрдВрд╕реА) рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ 1ред
2) $ рд╕рдВрджреЗрд╢ - Magento 1 рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА $ рдСрдмреНрдЬреЗрдХреНрдЯ-> getData () рдпрд╣рд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдбреЗрдЯрд╛ рдРрд░реЗ рдХреЛ рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред \ Exception рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ \ Magento \ Framework \ Logger \ Monolog рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ -> getMessage () рдЖрдЧреЗ $ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧрд░ \ Exception рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
3) $ рд╕рдВрджрд░реНрдн рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░, рдПрдХ рд╕рд░рдгреА рд╣реИред
2. $ рдпрд╣ -> _ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╕рдВрдкрддреНрддрд┐ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИредрд╡рд░реНрддрдорд╛рди рдореЗрдВ: рдмреНрд▓реЙрдХ, рд╣реЗрд▓реНрдкрд░, рдореЙрдбрд▓, рд╕рдВрдЧреНрд░рд╣, рдЖрджрд┐ред
рдЗрд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ : ResourceModel, рдирд┐рдпрдВрддреНрд░рдХ, Comand, Setup, рдЖрджрд┐ред
рд╕рдВрд╕рд╛рдзрдирдореЙрдбрд▓ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВредResourceModel рдХреЗ рдкрд╛рд╕ _logger рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкреЙрдкреБрд▓реЗрдЯреЗрдб рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рдЬреА рдореИрдЯрд▓реЛрдЧрд░ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ \ Magento \ рдлреНрд░реЗрдорд╡рд░реНрдХ \ Model \ ResourceModel \ AbstractResource рдореЗрдВ рдкреЙрдкреБрд▓реЗрдЯреЗрдб рд╣реИред рд╡рд┐рдзрд┐ рдХреЛ рдХреЗрд╡рд▓ рдХрдорд┐рдЯ рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛рдмреЗрд╕ (рдХреИрдЪ рдмреНрд▓реЙрдХ рдореЗрдВ) рд▓рд┐рдЦрддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдм рддрдХ, рд╕рдВрд╕рд╛рдзрди рдореЙрдбрд▓ рдореЗрдВ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
public function commit() { $this->getConnection()->commit(); if ($this->getConnection()->getTransactionLevel() === 0) { $callbacks = CallbackPool::get(spl_object_hash($this->getConnection())); try { foreach ($callbacks as $callback) { call_user_func($callback); } } catch (\Exception $e) { $this->getLogger()->critical($e); } } return $this; } тАж private function getLogger() { if (null === $this->_logger) { $this->_logger = ObjectManager::getInstance()->get(\Psr\Log\LoggerInterface::class); } return $this->_logger; }
рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╣реИред рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ \ Magento \ рдлреНрд░реЗрдорд╡рд░реНрдХ \ Data \ Collection \ AbstractDb рдореЗрдВ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
рдпрд╣ рдХрд╣рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ ObjectManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ ($ рдЗрд╕ рдорд╛рдзреНрдпрдо рд╕реЗ -> _ objectManager рд╕рдВрдкрддреНрддрд┐)ред рд▓реЗрдХрд┐рди рдпрд╣, рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
3. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдФрд░ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреА рд╕реВрдЪреАредрд╡реИрд╢реНрд╡рд┐рдХ di.xml (рдРрдк / etc / di.xml) рдореЗрдВ рдЖрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ \ Psr \ Log \ LoggerInterface \ Magento \ Framework \ Logger \ Monolog рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ Monolog \ Logger рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдирд╛рдо рдореБрдЦреНрдп рд╣реИред рдХрдИ рд╣реИрдВрдбрд▓рд░ рднреА рд╡рд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
тАж <preference for="Psr\Log\LoggerInterface" type="Magento\Framework\Logger\Monolog" /> ... <type name="Magento\Framework\Logger\Monolog"> <arguments> <argument name="name" xsi:type="string">main</argument> <argument name="handlers" xsi:type="array"> <item name="system" xsi:type="object">Magento\Framework\Logger\Handler\System</item> <item name="debug" xsi:type="object">Magento\Framework\Logger\Handler\Debug</item> <item name="syslog" xsi:type="object">Magento\Framework\Logger\Handler\Syslog</item> </argument> </arguments> </type> ...
рдХреБрдЫ рдХрдХреНрд╖рд╛рдПрдВ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд▓реЛрдЧреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ Magento \ Developer рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреБрдирдГ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):
1) Magento рдХреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ \ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ \ рд╣реИрдВрдбрд▓рд░ \ рдкреНрд░рдгрд╛рд▓реА (
рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реБрдирддрд╛ рд╣реИ)2) Magento \ Developer \ Model \ Logger \ рд╣реИрдВрдбрд▓рд░ \ Debug (
DEBUG рдкрд░ рд╕реБрдирддрд╛ рд╣реИ )
3) Magento \ Developer \ Model \ Logger \ рд╣реИрдВрдбрд▓рд░ \ Syslog (
DEBUG рдХреЛ рд╕реБрдирддрд╛ рд╣реИ )
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдЧреЛрдВ (рдбрд┐рдмрдЧ рдФрд░ рд╕рд┐рд╕рд▓реЙрдЧ) рдореЗрдВ
, рд▓реЙрдЧрд┐рдВрдЧ (рджреЗрд╡ / рдбрд┐рдмрдЧ / рдбрд┐рдмрдЧ_рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рджреЗрд╡ / рд╕рд┐рд╕рд▓реЙрдЧ / рд╕рд┐рд╕рд▓реЙрдЧ_рд▓реЙрдЧрд┐рдВрдЧ)
рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдкрд╡рд╛рдж рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдХреА рд╕реВрдЪреА рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
Magento рдХреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ \ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ \ рд╣реИрдВрдбрд▓рд░ \ рдкреНрд░рдгрд╛рд▓реА ... public function write(array $record) { if (isset($record['context']['exception'])) { $this->exceptionHandler->handle($record); return; } $record['formatted'] = $this->getFormatter()->format($record); parent::write($record); } ...
рдореИрдЧреЗрдВрдЯреЛ 2 рд╕реЗ 2.2 рдореЗрдВ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА рдЬреЛ рдкрд╣рд▓реЗ рдПрдХ рдХреЗ рдмрд╛рдж рджреВрд╕рд░реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреВрджрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдереАред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдереА рдХрд┐ рдореЛрдиреЛрд▓реЙрдЧ рдХреЛ рдЙрдореНрдореАрдж рдереА рдХрд┐ рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдбрд┐рдЬрд┐рдЯрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рдЕрд▓реНрдлрд╛рдмреЗрдЯрд┐рдХ рдХреАрдЬрд╝ (['рд╕рд┐рд╕реНрдЯрдо' =>, 'рдбреАрдмрдЧ' =>, ...]) рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВред рдореИрдЧрдиреЗрдЯреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдмрд╛рдж рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ - рдЙрдиреНрд╣реЛрдВрдиреЗ рдореЙрдиреЛрд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реИрд╢ рдХреЛ рдбрд┐рдЬрд┐рдЯрд▓ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рдореЛрдиреЛрд▓реЙрдЧ рдиреЗ рдЕрдм рд╣реИрдВрдбрд▓рд░ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рднреА рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓реА () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
4. рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛редрд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдкрд░ рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдЧреЗрдВрдЯреЛ 2 рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдмрд┐рдЧрд╛рдбрд╝рддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рд╕рд╛ред рдЖрдк рдореМрдЬреВрджрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЛ di.xml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ... "рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрд╢рд╛рд░реЗ"ред рдпрд╣ рдорд░реНрдЬ рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдХрд╛рд░рдг рд╣реИред
рдХрдИ
рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реНрдХреЛрдк рд╣реИрдВ :
1) рдкреНрд░рд╛рд░рдВрднрд┐рдХ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдЖрджрд┐ / di.xml)
2) рдЧреНрд▓реЛрдмрд▓ ({рдореЙрдбреНрдпреВрд▓рдбрд╛рдпрд░} /etc/di.xml)
3) рдХреНрд╖реЗрддреНрд░-рд╡рд┐рд╢реЗрд╖ ({рдореЙрдбреНрдпреВрд▓рдбрд┐рдпрд░} / etc / {рдХреНрд╖реЗрддреНрд░} /di.xml рдЕрд░реНрдерд╛рддред рд╕рд╛рдордиреЗ / рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ / crontab / webapi_soap / webapi_rest, рдЖрджрд┐)
рд▓реЗрд╡рд▓ 1 рдХреЗ рдЕрдВрджрд░, рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд▓реЗрд╡рд▓ рдХреЛ рдорд░реНрдЬ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдШреЛрд╖рд┐рдд рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рд╕реЗ рдореМрдЬреВрджрд╛ рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦреЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЬреЛрдбрд╝ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджрд╛рдпрд░реЗ рд╕реЗ рдХреБрдЫ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЖрдЗрдП рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд▓реЙрдЧ рдХреЗ рдореБрдЦреНрдп рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рдЬреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
1. рдорд╛рдирдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд▓реЙрдЧрд┐рдВрдЧ
рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рдорд╛рдирдХ рд▓реЙрдЧ (рдбрд┐рдмрдЧ.рд▓реЙрдЧ, рд╕рд┐рд╕реНрдЯрдо.рд▓реЙрдЧ рдпрд╛ рдЕрдкрд╡рд╛рдж.рд▓реЙрдЧ) рдореЗрдВ рд╕реЗ 1 рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
class RandomClass { private $logger; public function __construct(\Psr\Log\LoggerInterface $logger) { $this->logger = $logger; } public function foo() { $this->logger->info('Something went wrong');
рдЕрдЧрд░ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд░рд╛рд╕рдд рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
тАж $this->_logger->info('Something went wrong');
2. рдПрдХ рдХрд╕реНрдЯрдо рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ
рдпрд╣ рд╡рд┐рдзрд┐ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдПрдХ рдХреНрд▓реЛрди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдЪреИрдирд▓ (рдирд╛рдо) рдЙрд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЦреЛрдЬ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред
class RandomClass { private $logger; public function __construct(\Psr\Log\LoggerInterface $logger) { $this->logger = $logger->withName('api');
рдЖрд╡рд╢реНрдпрдХ рд▓реЙрдЧ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореМрдЬреВрджрд╛ рд╕рд┐рд╕реНрдЯрдо.рд▓реЙрдЧ, рдбреАрдмрдЧ.рд▓реЙрдЧ, рдЕрдкрд╡рд╛рдж.рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ "рдПрдкреАрдЖрдИ" (рдореИрдЧреЗрдВрдЯреЛ 2 рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдореБрдЦреНрдп рд╣реИ) рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
grep -rn 'api' var/log/system.log
3. рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдирд╛
рдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВ рдЬреЛ рдХреНрд░рд┐рдЯрд┐рдХрд▓ рд╕реНрддрд░ рдХреА рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ var / log / рдорд╣рддреНрд╡рдкреВрд░реНрдг.log рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдбреАрдмрдЧ.рд▓реЙрдЧ рдФрд░ system.log рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдбреБрдкреНрд▓реАрдХреЗрд╢рди рд╕реЗ рдмрдЪ рдЬрд╛рдПрдЧрд╛ред
<?php namespace Oxis\Log\Logger\Handler; use Magento\Framework\Filesystem\DriverInterface; use Magento\Framework\Logger\Handler\Base; use Monolog\Logger; class Test extends Base { protected $fileName = 'var/log/critical.log'; protected $loggerType = Logger::CRITICAL; public function __construct(DriverInterface $filesystem) { parent::__construct($filesystem,null,null); $this->bubble = false;
Magento 2 рдореЗрдВ 2.2+ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ \ Magento \ Framework \ Logger \ Handler \ Base рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрде рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ
рдЗрд╕рд▓рд┐рдП, рдкреБрд░рд╛рдиреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдЖрдк рдЕрднреА рднреА $ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдЪреВрдВрдХрд┐ рдмреЗрд╕ рдЖрдкрдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рдмреБрд▓рд╛ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рджреЛрд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛ (рдЬреЛ, рд╡реИрд╕реЗ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ) рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдореИрдВрдиреЗ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред
use Oxis\Log\Logger\Handler\Test; use Psr\Log\LoggerInterface; class RandomClass { private $logger; public function __construct( LoggerInterface $logger, Test $handler ) { $logger->pushHandler($handler);
рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕реНрдХреЛрдк рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ di.xml рдореЗрдВ рд╕рднреА рд▓реЙрдЧрд░реНрд╕ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рд▓рдХреНрд╖реНрдп рд╕рднреА рд▓реЙрдЧрд░ рдХреЛ рдЕрдкрдиреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╣реИ, рддреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдЯрд╛рдЗрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЖрдЧреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
4. virtualType рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдирд╛
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдореЗрдВ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ di.xml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдк Magento \ Payment рдФрд░ Magento \ Shipping рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг Magento 2 2.2 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
Magento 2 2.2+ рдореЗрдВ, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ \ Magento \ Framework \ Logger \ рд╣реИрдВрдбрд▓рд░ \ Base рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдФрд░ рд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде di.xml рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдпрд╛ рддреЛ $ рдлрд╝рд╛рдЗрд▓рдкрд╛рде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реНрдг рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╛ рдПрдХ рдирдпрд╛ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓ $ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд▓рд┐рдЦрд╛ рдЬрд╛рдПред
рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ di.xml рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ
<virtualType name="ApiHandler" type="Magento\Framework\Logger\Handler\Base"> <arguments> <argument name="fileName" xsi:type="string">var/log/api.log</argument> </arguments> </virtualType> <virtualType name="ApiLogger" type="Magento\Framework\Logger\Monolog"> <arguments> <argument name="name" xsi:type="string">api</argument> <argument name="handlers" xsi:type="array"> <item name="default" xsi:type="object">ApiHandler</item> </argument> </arguments> </virtualType> <type name="Oxis\Log\Model\A"> <arguments> <argument name="logger" xsi:type="object">ApiLogger</argument> </arguments> </type>
рдСрдХреНрд╕рд┐рд╕ \ рд▓реЙрдЧ \ рдореЙрдбрд▓ \ рдП рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВред
namespace Oxis\Log\Model; class A { private $logger; public function __construct(\Psr\Log\LoggerInterface $logger) { $this->logger = $logger; } public function foo() { $this->logger->info('Something went wrong'); } }
рдЕрдм рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЙрдЧреНрд╕ рдХреЛ рд╣рдорд╛рд░реЗ рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ var / log / api.log рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЙрдЧ рд▓рд┐рдЦреЗрдВрдЧреЗред
4.1ред рдпрджрд┐ рд╡рд░реНрдЧ $ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВредрдЗрд╕рдореЗрдВ \ Magento \ рдХреИрдЯрд▓реЙрдЧ \ рдореЙрдбрд▓ \ рдЙрддреНрдкрд╛рдж рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рди рдкрд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ \ Psr \ Log \ LoggerInterface рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ \ Magento \ Framework \ Model \ Context рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд░реНрдЧ рдХреА рд╕рдВрдкрддреНрддрд┐ рдкрд░ рд╕реЗрдЯ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдКрдкрд░ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдФрд░ $ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд┐рдд рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкреВрд░реЗ Magento рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рдо $ рд╕рдВрджрд░реНрдн рдХреЛ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП virtualType рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВрдЧреЗред
<virtualType name="ApiHandler" type="Magento\Framework\Logger\Handler\Base"> <arguments> <argument name="fileName" xsi:type="string">var/log/api.log</argument> </arguments> </virtualType> <virtualType name="ApiLogger" type="Magento\Framework\Logger\Monolog"> <arguments> <argument name="name" xsi:type="string">api</argument> <argument name="handlers" xsi:type="array"> <item name="default" xsi:type="object">ApiHandler</item> </argument> </arguments> </virtualType> <virtualType name="ApiLogContainingContext" type="Magento\Framework\Model\Context"> <arguments> <argument name="logger" xsi:type="object">ApiLogger</argument> </arguments> </virtualType> <type name="Oxis\Log\Model\A"> <arguments> <argument name="context" xsi:type="object">ApiLogContainingContext</argument> </arguments> </type>
5. рдлрд╛рд╕реНрдЯ рдбреЗрдЯрд╛ рд▓реЙрдЧрд┐рдВрдЧ
рдРрд╕реЗ рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдпрд╣ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рдкрд░ рдпрд╛ рддреНрд╡рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
... $log = new \Monolog\Logger('custom', [new \Monolog\Handler\StreamHandler(BP.'/var/log/custom.log')]); $log->error('test'); ...
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ: рдПрдХ рддрд╛рд░реАрдЦ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдПрдХ рд╕рдВрджрд░реНрдн (рд╕рд░рдгреА) рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдВрдд рдореЗрдВ \ n рдЬреЛрдбрд╝рддрд╛ рд╣реИрдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, \ Monolog \ Logger рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рди рдХрд┐ \ Magento \ Framework \ Logger \ Monolog рдЬреЛ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд▓рд┐рдЦрдирд╛ (рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рди рдпрд╛рдж рд░рдЦрдирд╛)ред
рдмрджрд▓реЗ рдореЗрдВ \ Monolog \ Handler \ StreamHandler, рдЖрдзрд╛рд░ рдХреЗ рдмрдЬрд╛рдп \ Magento \ Framework \ Logger \ Handler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдзрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред
рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдЕрдЪреНрдЫреА рдкреБрд░рд╛рдиреА file_put_contentsред
... file_put_contents(BP.'/var/log/custom.log', 'test',FILE_APPEND); ...
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рдн: рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрд▓реНрджреА рд▓рд┐рдЦреЗрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИрджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдЧреНрд░рдгреА рднреВрдорд┐рдХрд╛ рдирд┐рд░рдВрддрд░
рдмреАрдкреА рджреНрд╡рд╛рд░рд╛ рдирд┐рднрд╛рдИ рдЬрд╛рддреА рд╣реИред рд╡рд╣ рд╣рдореЗрд╢рд╛ рдореИрдЬреЗрдиреНрдЯрд╛ (рдкрдм рд╕реЗ 1 рд╕реНрддрд░ рдЕрдзрд┐рдХ) рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рд╣рдореЗрдВ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд▓реЙрдЧ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдереА рдпрд╛ рд╣реЛрдЧреАред