рдПрдХ рд╡рд┐рддрд░рд┐рдд php рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ


рдЖрд▓реЗрдЦ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд╛рднреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред рдореИрдВ PSR рдкрд░ рд▓реЙрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред рдореИрдВ рд▓реЙрдЧ рдЗрд╡реЗрдВрдЯ рдХреЗ рд╕реНрддрд░, рд╕рдВрджреЗрд╢ рдФрд░ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЖрд╡реЗрджрди рдореЗрдВ рдИрдПрд▓рдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдбреЙрдХрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рдпрдо рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ рдЬреЛ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕реНрдЯреИрдХ рдХреЛ рдЙрдард╛рддрд╛ рд╣реИред


рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рд▓рд╛рдн


рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд▓реЙрдЧрд┐рдВрдЧ рдХрдо рд╕реЗ рдХрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:


  • рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреБрдЫ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ (рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реИрдВ)
  • рддреНрд░реБрдЯрд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдЬрд╛рдиреЗрдВ, рдЬреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдВ рдФрд░ рдХрд╣рд╛рдВ рд╣реБрдИ, рдФрд░ рдПрдХ рджреЛрд╣рд░рд╛рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВ
  • рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ (access.log, debug-, info-level)

рд╕реНрд╡рдпрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рдпрд╣ рд╕рдм рдЖрдкрдХреЛ рдирд╣реАрдВ рдмрддрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд▓реЙрдЧреНрд╕ рдХреА рдорджрдж рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЕрдкрдиреЗ рдЖрдк рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдпрд╛ рд▓реЙрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕реВрдЪрдирд╛ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдпрджрд┐ рд▓реЙрдЧ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рд╣реИрдВ, рддреЛ рдпрд╣ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдирд╛ рд╣реБрдИ рдереАред


рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ


Php рд╕рдореБрджрд╛рдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдиреЗ рдХреБрдЫ рдХреЛрдб рд▓реЗрдЦрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХреА рд╣реИрдВред рдРрд╕реА рд╣реА рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ PSR-3 рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ ред рдпрд╣ рд╕рд┐рд░реНрдл рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, "psr / log" рдкреИрдХреЗрдЬ рдХрд╛ Psr\Log\LoggerInterface рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдШрдЯрдирд╛ рдХреЗ рддреАрди рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛:


  1. рд╕реНрддрд░ - рдШрдЯрдирд╛ рдорд╣рддреНрд╡
  2. рд╕рдВрджреЗрд╢ - рдШрдЯрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╛рда
  3. рдкреНрд░рд╕рдВрдЧ - рдШрдЯрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рдПрдХ рд╕рд░рдгреА

PSR-3 рдЗрд╡реЗрдВрдЯ рд▓реЗрд╡рд▓


рд╕реНрддрд░ RFC 5424 рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдП рдЧрдП рд╣реИрдВ - Syslog рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдЙрдирдХрд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд┐рд╡рд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:


  • рдбреАрдмрдЧ - рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╡рд░рдг
  • рдЬрд╛рдирдХрд╛рд░реА - рджрд┐рд▓рдЪрд╕реНрдк рдШрдЯрдирд╛рдПрдБ
  • рд╕реВрдЪрдирд╛ - рд╕рд╛рдордЧреНрд░реА рдХреА рдШрдЯрдирд╛рдПрдВ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ
  • рдЪреЗрддрд╛рд╡рдиреА - рдЕрд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ
  • рддреНрд░реБрдЯрд┐ - рдирд┐рд╖реНрдкрд╛рджрди рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреНрд╖рдгрд┐рдХ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  • рдЖрд▓реЛрдЪрдирд╛рддреНрдордХ - рдЧрдВрднреАрд░ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ (рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХ рдЕрдиреБрдкрд▓рдмреНрдз, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЕрдкрд╡рд╛рдж рд╣реИ)
  • рдЪреЗрддрд╛рд╡рдиреА - рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рддрддреНрдХрд╛рд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
  • рдЖрдкрд╛рддрдХрд╛рд▓ - рдкреНрд░рдгрд╛рд▓реА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ

рдПрдХ рд╡рд░реНрдгрди рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдХрдиреЗрдХреНрдЯреЗрдб рд╕рдВрд╕рд╛рдзрди рддрдХ рдкрд╣реБрдБрдЪ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рд╡рд┐рдлрд▓ рд╣реБрдЖ, рдпрд╛ рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рдпрд╣ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рддрддреНрдХрд╛рд▓ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдпрд╣ рдПрдХ рджреБрд░реНрд▓рдн рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдирджреЗрдЦрд╛ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдирд┐рдЧрд░рд╛рдиреА рд▓реЙрдЧ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕реНрддрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЯреАрдо рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рд╕реНрддрд░реЛрдВ рдкрд░ рд╕рд╣рдорддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:


  • рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рд╕реНрддрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдЗрд╕рдХрд╛ рд╕реНрд╡-рдирд┐рджрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
  • рдЪреЗрддрд╛рд╡рдиреА - рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХрд╛ рдирд┐рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрд╕ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдШрдЯрдирд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬреБрдбрд╝реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдпрд╛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреА рдЬрд╛рдВрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрди рдХреЗ рдЦрд╛рддреЗ рдкрд░ рдПрдХ рд╕рдВрддреБрд▓рдиред
  • рдорд╣рддреНрд╡рдкреВрд░реНрдг - рдПрдХ рдШрдЯрдирд╛ рдЬрдм рдПрдХ рд╡рд┐рдлрд▓рддрд╛ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдШрдЯрдХ рджреЗрддреА рд╣реИ рдЬреЛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдХреБрдЫ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реБрдЖ рд╣реЛред
  • рддреНрд░реБрдЯрд┐ - рдПрдХ рдРрд╕реА рдШрдЯрдирд╛ рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рджреЛрд╣рд░рд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓, рдЬрд┐рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдирд╣реАрдВ рдЖрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЪрд┐рддреНрд░ рдХреЛ рдЙрд╕рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╕рд╣реЗрдЬрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЪрд┐рддреНрд░ рд╕реЗрд╡рд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЪреИрдЯ рдкреНрд░рдгрд╛рд▓реА рд╣реИред
  • рдЪреЗрддрд╛рд╡рдиреА - рдШрдЯрдирд╛рдУрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рддрддреНрдХрд╛рд▓ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рдордп рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдбрд╛рдпрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓, рдЬрд┐рд╕рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреБрдЫ рднреА рдЧрдВрднреАрд░ рдирд╣реАрдВ рддреЛрдбрд╝рддреА рд╣реИред рдпреЗ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рд╕реБрдзрд╛рд░ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрд╡рддрд╛рд░ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдерд╛ред рдЕрдЪрд╛рдирдХ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ (рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдкрд░) рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рдХреНрд╖рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
  • рдиреЛрдЯрд┐рд╕ - рдпреЗ рдРрд╕реА рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╡рд┐рдЪрд▓рди рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИрдВ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдордХрд╛рдЬ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рдЧрд▓рдд рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдордзреНрдп рдирд╛рдо рдирд╣реАрдВ рднрд░рд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ 0 рд░реВрдмрд▓ рдХреЗ рд▓рд┐рдП рдСрд░реНрдбрд░ рдЦрд░реАрджрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЙрди рдкрд░ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЪрд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреЗрдЬ рд╡реГрджреНрдзрд┐ рдПрдХ рдЧрд▓рддреА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕реЗ рддрддреНрдХрд╛рд▓ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • рдЬрд╛рдирдХрд╛рд░реА - рдШрдЯрдирд╛рдУрдВ, рдХреА рдШрдЯрдирд╛ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдордХрд╛рдЬ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкрдВрдЬреАрдХрд░рдг рдХрд┐рдпрд╛ рд╣реИ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдЙрддреНрдкрд╛рдж рдЦрд░реАрджрд╛ рд╣реИ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЫреЛрдбрд╝ рджреА рд╣реИред рдРрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд╡рд┐рдкрд░реАрдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рд╣реБрдИ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреА рдХрдореА рддреНрд░реБрдЯрд┐ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реЛ рд╕рдХрддреА рд╣реИред
  • рдбрд┐рдмрдЧ - рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯред рдЬрдм рдЖрдк рдШрдЯрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдЙрддреНрдкрд╛рдж рдкреГрд╖реНрда рдЦреЛрд▓рд╛ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХреАред рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рднреЗрдЬреА рдЧрдИ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж рдРрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдирддреАрдЬрддрди, рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдореЗрдВ рдРрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдЧреА, рдлрд┐рд░ рдЙрди рдкрд░ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдШрдЯрдирд╛ рд╕рдВрджреЗрд╢


PSR-3 рджреНрд╡рд╛рд░рд╛, рд╕рдВрджреЗрд╢ рдХреЛ __toString() рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PSR-3 рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рдВрджреЗрд╢ рдкрдВрдХреНрддрд┐ рдореЗрдВ тАЭUser {username} createdтАЭ рдЧрдП рдлрд╝реЙрд░реНрдо рдХреЗ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрдн рд╕рд░рдгреА рд╕реЗ рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрд▓рд┐рдпрд╕реНрдЯреИрдХрд┐рд╕рд░реНрдЪ рдФрд░ рдХрд┐рдмрд╛рдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рдХреНрд╕реНрдб рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╡реЗрдВрдЯ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛, рдФрд░ рд╕рдВрджрд░реНрдн рд╣рдореЗрд╢рд╛ рд░рд╣реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:


  1. рдкрд╛рда рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рд╕рд╛рд░реНрдердХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдЕрд▓рд░реНрдЯ рдореЗрдВ рдЖрдПрдЧрд╛, рдФрд░ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╣реЛрдЧрд╛ рдЬреЛ рдШрдЯрд┐рдд рд╣реБрдИ рд╣реИрдВред
  2. рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рда рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрджрд░реНрдн рдореЗрдВ рджреЗрдЦреЗ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдШрдЯрдирд╛ рдХрд┐рд╕ рднрд╛рдЧ рдореЗрдВ рд╣реБрдИ рд╣реИ, рдЕрд▓рд░реНрдЯ рд╕реЗ рд╕рдВрднрд╡ рд╣реЛрдЧреАред

рдШрдЯрдирд╛ рдХрд╛ рд╕рдВрджрд░реНрдн


PSR-3 рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛ рдХрд╛ рд╕рдВрджрд░реНрдн рдЪрд░ рдорд╛рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА (рд╕рдВрднрд╡рддрдГ рдиреЗрд╕реНрдЯреЗрдб) тАЛтАЛрд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдХрд╛рдИ рдЖрдИрдбреАред рдпрджрд┐ рд╕рдВрджреЗрд╢ рдИрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИ рддреЛ рд╕рдВрджрд░реНрдн рдХреЛ рдЦрд╛рд▓реА рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдкрд╡рд╛рдж рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдкреВрд░реЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдХреЗрд╡рд▓ getMessage() ред NormalizerFormatter рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЛрдиреЛрд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп , рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рдж рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╕рд╣рд┐рдд рдИрд╡реЗрдВрдЯ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдиреА рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрджрд▓реЗ рдЬрд░реВрд░рдд рд╣реИ


 [ 'exception' => $exception->getMessage(), ] 

рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП


 [ 'exception' => $exception, ] 

рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ, рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЧреНрд▓реЛрдмрд▓ рд▓реЙрдЧ рдХреЙрдирдЯреЗрдХреНрд╕реНрдЯ (рдХреЗрд╡рд▓ рдЕрд╕рдлрд▓ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛ report() ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдпрд╛ рд▓реЙрдЧрдлрд╝реЙрд░реНрдорд░ (рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рд╕реВрдЪрдирд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, URI, IP, UUID рдФрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред


рдЬрдм рдПрдХ рд▓реЙрдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдПрд▓рд┐рдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ customer_id рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЛ рдХрд┐рд╕реА рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ (uuid), рддреЛ рдРрд╕рд╛ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рддрдм рддрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдореВрд▓реНрдп рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╣рд░ рджрд┐рди рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреЗрд╡рд▓ рдЕрдЧрд▓реЗ рджрд┐рди рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рдмрдирд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрдВрдЧреЗ рдФрд░ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдХреБрдЫ рд╕рдВрдЪрд╛рд▓рди рддрдм рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рдорд┐рд╢реНрд░рд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:


  • рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рдХреБрдВрдЬреА рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
  • рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдПрдХ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдкрд╖реНрдЯ рдврд▓рд╛рдИ рдХрд░реЗрдВ

рдЙрджрд╛рд╣рд░рдг: рдЗрд╕рдХреЗ рдмрдЬрд╛рдп


 [ 'response' => $response->all(), 'customer_id' => $id, 'value' => $someValue, ] 

рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП


 [ 'smsc_response_data' => json_encode($response->all()), 'customer_id' => (string) $customer_id, 'smsc_request_some_value' => (string) $someValue, ] 

рдХреЛрдб рд╕реЗ рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реИ


рд▓реЙрдЧ рдореЗрдВ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


  1. рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди log() рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдмрдирддреА рд╣реИред рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рдФрд░ рджреЛрд╖, рдЕрдЧрд░ рд╣рдо рд▓рд╛рд░рд╡реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
  2. Laravel facade \ Log рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЗрд╕ рдкрд╣рд▓реВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЯрд╛рд╕реНрдХ, рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд▓рд┐рдЦреЗрдВред рдпрд╛ рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдФрд░ рдПрдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдлреЗрдВрдХрдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред
  3. app() рдФрд░ resolve() рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ resolve() ред рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реА рдиреБрдХрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  4. рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬреЛ рдпрд╣ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рдбреАрдЖрдИрдкреА рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрд╕реА LoggerInterface рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдСрдЯреЛрд╡реЗрдпрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЕрдкрдиреЗ рдШреЛрд╖рд┐рдд рд╕рд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреАред рд▓рд╛рд░рд╡реЗрд▓ рдореЗрдВ, рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реЗ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреЛрдб рдореЗрдВ рдЬрд╣рд╛рдВ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕ рд╡рд░реНрдЧ рдореЗрдВ рд▓реЙрдЧ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕реЗрд╡рд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдпрд╛ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рд╕реЗрд╡рд╛ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдирд┐рдпрдВрддреНрд░рдХ, рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп, рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб? рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдкрдиреА report (рд▓рд╛рд░рд╡реЗрд▓) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдХреЛ рдХреНрдпрд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ? рдПрдХ рд╕рд╛рде рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рд░рд▓ рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред


рд▓рд╛рд░рд╡реЗрд▓ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЕрд╡рд╕рд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЕрдкрд╡рд╛рдж рд╡рд░реНрдЧ рдХреЛ рд╕реНрд╡рдпрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╕реМрдВрдкреЗрдВред рдПрдХ рдЕрдкрд╡рд╛рдж рдпрд╣ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЕрдкрд╡рд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдкрд╡рд╛рдж рдкрд░ render рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ render , рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдЕрдкрд╡рд╛рдж рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡реИрд╢реНрд╡рд┐рдХ ErrorHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рдпрд╛ report() рдкрдХрдбрд╝рдиреЗ рдФрд░ report() рд╡реИрд╢реНрд╡рд┐рдХ рд╕рд╣рд╛рдпрдХ report() рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рд╣рд░ рдмрд╛рд░ PSR-3 рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЛ рдХреЙрд▓ рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред


рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╣реА рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдХреБрдЫ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЖрдк рд▓реЙрдЧрд┐рдВрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рддрдм рдпрд╣ рд╕реЗрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕рдХреЗ рдорд╣рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрд╕рдПрдордПрд╕ рдЧреЗрдЯрд╡реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХреАрдХрд░рдг рд╕реЗрд╡рд╛ред рдпрджрд┐ рд╣рдореЗрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЧрдВрднреАрд░ рд╣реИред рд╢рд╛рдпрдж рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдЕрдиреНрдп рдПрд╕рдПрдордПрд╕ рдЧреЗрдЯрд╡реЗ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╕реЗрд╡рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдкрд╣рд▓реЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЕрдм рдЗрди рд╕рднреА рдПрдХреАрдХрд░рдгреЛрдВ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдПрдХ рд╕реЗрд╡рд╛ рдореЗрдВ рд╣реИ, рдФрд░ рд╣рдо рджреВрд╕рд░реЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рдЖрд╡рд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рд╣рдо рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рд╕рд╣реА рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдбреЗрдХреЛрд░реЗрдЯрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд▓реЙрдЧ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЙрдЪрд┐рдд рдорд╛рдирддрд╛ рд╣реВрдВред


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдкрд╛рд╕рд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:


 <?php namespace App\Console\Commands; use App\Services\ExampleService; use Illuminate\Console\Command; use Psr\Log\LoggerInterface; class Example extends Command { protected $signature = 'example'; public function handle(ExampleService $service, LoggerInterface $logger) { try { $service->example(); } catch (\Exception $exception) { $logger->critical('Example error', [ 'exception' => $exception, ]); } } } 

рдХрд╣рд╛рдВ рд▓рд┐рдЦреВрдВ?


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


  1. 12 рдлреИрдХреНрдЯрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рд░рдирдЯрд╛рдЗрдо рдХреЗ stdout, stderr рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк config рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ php://stdout * рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. 12-рдлреИрдХреНрдЯрд░, рдбреЙрдХ-рд╡реЗ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд▓рд┐рдЦреЗрдВред рд▓рд╛рд░рд╡реЗрд▓ (рдореЛрдиреЛрд▓реЙрдЧ) рдЖрдкрдХреЛ рд▓реЙрдЧ рд░реЛрдЯреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЖрдЧреЗ рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдлрд╛рдЗрд▓рдмреАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  3. рдЖрд╡реЗрджрди рдХреЛ рд╕реАрдзреЗ рдЖрдЧреЗ рд╕реЗ рд▓реЙрдЧ рднреЗрдЬреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдбреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
  4. рдШреЛрд▓ рдорд┐рд▓рд╛рдПрдВред рдлрд╛рдЗрд▓рдмреАрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдЦреЗрдВ рдФрд░ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрдВрдЯреЗрдирд░ рд╕реНрдЯреЙрдбрд░ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рддрд╛рдХрд┐ docker logs рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рд▓реЙрдЧ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдХреБрдЫ рдЪреИрдирд▓ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред

* Php-fpm 7.2 рдореЗрдВ, рдЬрдм stdout рдореЗрдВ рд▓реЙрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ "рдЪреЗрддрд╛рд╡рдиреА: [рдкреВрд▓ www] рдмрдЪреНрдЪреЗ X рдиреЗ stdout рдореЗрдВ рдХрд╣рд╛ ...", рдФрд░ рд▓рдВрдмреЗ рд╕рдВрджреЗрд╢ рдХрд╛рдЯреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдпрд╣рд╛рдБ рд╣реИ ред Php-fpm 7.3 рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред


рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдХрд▓реНрдк:


  • рдорд╛рдирд╡-рдкрдардиреАрдп (рд▓рд╛рдЗрди рдмреНрд░реЗрдХ, рдЗрдВрдбреЗрдВрдЯ рдЖрджрд┐)
  • рдорд╢реАрди рдкрдардиреАрдп (рдЖрдорддреМрд░ рдкрд░ json)
  • рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛрдиреЛрдВ рдкреНрд░рд╛рд░реВрдк: рдЖрдЧреЗ рдХреА рд░рд╛рдЙрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд╢реАрди-рдкрдардиреАрдп, рдЕрдЪрд╛рдирдХ рдорд╛рд░реНрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рддреЗрдЬрд╝ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдирд╡-рдкрдардиреАрдп

рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд▓реЙрдЧ рд░реВрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ - рдХрдо рд╕реЗ рдХрдо, рдЙрдиреНрд╣реЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд▓реЙрдЧ рдХреЗ рдПрдХ рдПрдХрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рд┐рд╕реНрдЯрдо (рднрдВрдбрд╛рд░рдг) рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ:


  1. рд▓рдВрдмреЗ рд╕рдордп рддрдХ рднрдВрдбрд╛рд░рдг рдФрд░ рд╕рдВрдЧреНрд░рд╣
  2. рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЯреНрд░реЗрдВрдбрд┐рдВрдЧ
  3. рд▓рдЪреАрд▓реА рдШрдЯрдирд╛ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реА

рдбреЙрдХрд░ рдореЗрдВ рд▓реЙрдЧ рдореИрдиреЗрдЬрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ json-file рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдбреЙрдХрдЯрд░ рд╣реЛрд╕реНрдЯ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╕реЗ json-file рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рд▓реЙрдЧ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд╣реАрдВ рд░рд┐рдХреЙрд░реНрдб рднреЗрдЬреЗрдЧрд╛, рддреЛ рд╣рдо рдЕрдм docker logs рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдХреЗ stdout / stderr рдХреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдпрд╛ рдПрдХрд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд┐рдмрдЧ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рд╣рдо json-file docker рдФрд░ Filebeat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╕реНрдерд╛рдиреАрдп рд▓реЙрдЧ рдФрд░ рдЖрдЧреЗ рд░реВрдЯрд┐рдВрдЧ рджреЛрдиреЛрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдбреЙрдХрдЯрд░ рдХреА рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╡реЗрдВрдЯ рдХреЛ 16KB рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдкрд░, docker \n рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рддреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдХрдИ рд▓реЙрдЧ рдХрд▓реЗрдХреНрдЯрд░реЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХрд▓реЗрдХреНрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде, рдлрд╛рдЗрд▓рдмреАрдЯ рдЗрд╕ рдбреЙрдХрдЯрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред


рдЧрдВрддрд╡реНрдп рдФрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдХреА рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдХреНрдпрд╛ рд╕рдВрдпреЛрдЬрди рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред


Filebeat + ELK + Elastalert рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрддрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ:


  • рдлрд╛рдЗрд▓рдмреАрдЯ - рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рднреЗрдЬреЗ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ
  • Logstash - рдШрдЯрдирд╛рдУрдВ рдФрд░ рднреЗрдЬ рджреЗрддрд╛ рд╣реИ
  • рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ - рд╕рдВрд░рдЪрд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ
  • рдХрд┐рдмрд╛рдирд╛ - рдШрдЯрдирд╛рдУрдВ (рд░реЗрдЦрд╛рдВрдХрди, рдПрдХрддреНрд░реАрдХрд░рдг рдЖрджрд┐) рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
  • рдЗрд▓рд╛рд╕реНрдЯрд▓рд░реНрдЯ - рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рд░реНрдЯ рднреЗрдЬрддрд╛ рд╣реИ

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: zabbix, metricbeat, grafana рдФрд░ рдмрд╣реБрдд рдХреБрдЫред


рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХред


Filebeat


рдЖрдк рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рдЕрд▓рдЧ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред /var/lib/docker/containers/*/*.log рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдзрд╛рд░рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ host path /var/lib/docker/containers/*/*.log рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлрд╛рдЗрд▓рдмреАрдЯ рдХреЗ рдкрд╛рд╕ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ , рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣)ред рдлрд╝рд╛рдЗрд▓рдмреАрдЯ рд╣реА рдЗрд╡реЗрдВрдЯ рдХреЗ рдЕрдВрджрд░ рдЬреЛрдВрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЛрдВрд╕ рднреА рдЗрд╡реЗрдВрдЯреНрд╕ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рд╕рднреА рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред


рдлрд╛рдЗрд▓рдмреАрдЯ 6 рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдЧрдореЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
 filebeat.inputs: - type: docker containers: ids: - "*" processors: - add_docker_metadata: ~ 

Logstash


рдХрдИ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдлрд╛рдЗрд▓рдмреАрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рд░ рдШрдЯрдирд╛ рдореЗрдВ, рдШрдЯрдирд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ stdout / stderr рд╕реЗ, рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рд╣реЛрд╕реНрдЯ, рдХрдВрдЯреЗрдирд░, рдЖрджрд┐) рд╣реЛрддрд╛ рд╣реИред рдХрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдлрд┐рд▓реНрдЯрд░ рд╣реИрдВ: рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░реНрд╕, рдкрд╛рд░реНрд╕ рдЬреЛрдВрд╕, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рдЬреЛрдбрд╝реЗрдВ, рдлрд╝реАрд▓реНрдб рд╣рдЯрд╛рдПрдВ, рдЖрджрд┐ред рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрд╡реЗрджрди рд▓реЙрдЧ рдФрд░ рдирдЧреНрдиреЗрдХреНрд╕ рдПрдХреНрд╕реЗрд╕ рджреЛрдиреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдПрд▓рд┐рдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред


Logstash рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреБрдХрдбрд╝рд╛
 if [status] { date { match => ["timestamp_nginx_access", "dd/MMM/yyyy:HH:mm:ss Z"] target => "timestamp_nginx" remove_field => ["timestamp_nginx_access"] } mutate { convert => { "bytes_sent" => "integer" "body_bytes_sent" => "integer" "request_length" => "integer" "request_time" => "float" "upstream_response_time" => "float" "upstream_connect_time" => "float" "upstream_header_time" => "float" "status" => "integer" "upstream_status" => "integer" } remove_field => [ "message" ] rename => { "@timestamp" => "event_timestamp" "timestamp_nginx" => "@timestamp" } } } 

Elasticsearch


Elasticsearch рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЙрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рдиреНрдпреВрдирддрдо рдиреНрдпреВрдирддрдо рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╣реЗрдЬреЗ рдЧрдП рдИрд╡реЗрдВрдЯ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдиреБрдХреНрд░рдорд┐рдд рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдПрдХ рд╕реНрдХреАрдорд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрдо рд╕реЗ рдХрдо рдПрдХ рдлрд╝реАрд▓реНрдб рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рд╣реЗрдЬ рдирд╣реАрдВ рд╕рдХрддреЗред
рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдкрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ (рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП - рд╕рдо, рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо, рдФрд╕рдд, рдЖрджрд┐, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП - рдлрдЬреА рдЦреЛрдЬ, рдФрд░ рдЗрд╕реА рддрд░рд╣)ред
рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП, рдкреНрд░рдмрдВрдзрди рдЖрдорддреМрд░ рдкрд░ рджреИрдирд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рд╣рд░ рджрд┐рди рдПрдХ рдирдпрд╛ рд╕реВрдЪрдХрд╛рдВрдХред


рдбреЗрдЯрд╛ рдорд╛рддреНрд░рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рдПрд▓рд┐рдЯреЗрд╕рд░реНрдЪ рдХреЗ рд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд╣рди рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕реНрдерд┐рд░рддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди, рдЖрдк рдЕрдкреНрд░рдЪрд▓рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдкрд░ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╕реНрддрд░ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рджреБрд░реНрд▓рдн, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред


рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдирд┐рдкреЗрдЯ
 output { if [fields][log_type] == "app_log" { if [level] in ["DEBUG", "INFO", "NOTICE"] { elasticsearch { hosts => "${ES_HOST}" index => "logstash-app-log-debug-%{+YYYY.MM.dd}" } } else { elasticsearch { hosts => "${ES_HOST}" index => "logstash-app-log-error-%{+YYYY.MM.dd}" } } } } 

рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреНрдпреВрд░реЗрдЯрд░ рдХреЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рдХреНрд░реЛрди рдЕрдиреБрд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛
 action: delete_indices description: logstash-app-log-error options: ignore_empty_list: True filters: - filtertype: pattern kind: prefix value: logstash-app-log-error- - filtertype: age source: name direction: older timestring: '%Y.%m.%d' unit: months unit_count: 6 

, Filebeat Logstash, . Elasticsearch -- , , .


Kibana


Kibana . -, Elasticsearch. .


Kibana тАФ Discovery . , Discovery app warning , time, message, exception class, host, client_id.


, Discovery nginx, 404 time, message, request, status.
Kibana , : , , . , ( ).


рдЫрд╡рд┐


Elastalert


Elastalert Elasticsearch . , . , .
, (), .


:


  • ALERT, EMERGENCY. тАФ 10
  • CRITICAL. тАФ 30
  • , N X M
  • 10 INFO 3
  • nginx 200, 201, 304 75% , 50

 name: Blacklist ALERT, EMERGENCY type: blacklist index: logstash-app-* compare_key: "level" blacklist: - "ALERT" - "EMERGENCY" realert: minutes: 5 alert: - "slack" 

тАФ . , , . Kibana.


, , http- 75% , , , , . - , , , .


, , , , Kibana, .


5 . , , , , , .


, . .


Kibana . .



docker-. , , staging- production-, .


, Elastalert, . Elastalert ,
envsubst < /opt/elastalert/config.dist.yaml > /opt/elastalert/config.yaml entrypoint- , .


, , , .


Makefile
 build: docker build -t some-registry/elasticsearch elasticsearch docker build -t some-registry/logstash logstash docker build -t some-registry/kibana kibana docker build -t some-registry/nginx nginx docker build -t some-registry/curator curator docker build -t some-registry/elastalert elastalert push: docker push some-registry/elasticsearch docker push some-registry/logstash docker push some-registry/kibana docker push some-registry/nginx docker push some-registry/curator docker push some-registry/elastalert pull: docker pull some-registry/elasticsearch docker pull some-registry/logstash docker pull some-registry/kibana docker pull some-registry/nginx docker pull some-registry/curator docker pull some-registry/elastalert prepare: docker network create -d bridge elk-network || echo "ok" stop: docker rm -f kibana || true docker rm -f logstash || true docker rm -f elasticsearch || true docker rm -f nginx || true docker rm -f elastalert || true run-logstash: docker rm -f logstash || echo "ok" docker run -d --restart=always --network=elk-network --name=logstash -p 127.0.0.1:5001:5001 -e "LS_JAVA_OPTS=-Xms256m -Xmx256m" -e "ES_HOST=elasticsearch:9200" some-registry/logstash run-kibana: docker rm -f kibana || echo "ok" docker run -d --restart=always --network=elk-network --name=kibana -p 127.0.0.1:5601:5601 --mount source=elk-kibana,target=/usr/share/kibana/optimize some-registry/kibana run-elasticsearch: docker rm -f elasticsearch || echo "ok" docker run -d --restart=always --network=elk-network --name=elasticsearch -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" --mount source=elk-esdata,target=/usr/share/elasticsearch/data some-registry/elasticsearch run-nginx: docker rm -f nginx || echo "ok" docker run -d --restart=always --network=elk-network --name=nginx -p 80:80 -v /root/elk/.htpasswd:/etc/nginx/.htpasswd some-registry/nginx run-elastalert: docker rm -f elastalert || echo "ok" docker run -d --restart=always --network=elk-network --name=elastalert --env-file=./elastalert/.env some-registry/elastalert run: prepare run-elasticsearch run-kibana run-logstash run-elastalert delete-old-indices: docker run --rm --network=elk-network -e "ES_HOST=elasticsearch:9200" some-registry/curator curator --config /curator/curator.yml /curator/actions.yml 

:


  • 80 nginx, basic auth Kibana
  • Logstash . ssh-
  • nginx
  • , docker-
  • , .env- nginx-
  • *_JAVA_OPTS , 4GB RAM ( ES).

, xpack-.


docker-compose. , , Dockerfile-, Filebeat, Logstash, , , , , VCS.


. . , ( Laravel scheduler), , 5 . ALERT. , . , , .


рдирд┐рд╖реНрдХрд░реНрд╖


, , , . . , - . . , , .

Source: https://habr.com/ru/post/hi456676/


All Articles