Logger.Backends рдХреЗ рд╕рд╛рде рдирд┐рдЧрд░рд╛рдиреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ

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


рдЬрдмрдХрд┐ рдУрдЯреАрдкреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЬрд░реНрдирд▓ рдИрд╡реЗрдВрдЯ (рдИрд╡реЗрдВрдЯ) рджреЗрдиреЗ, рд╕реНрд╡рдпрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ, рдпрджрд┐ рд╕реНрдЯреЛрд░рд┐рдВрдЧ рдФрд░ / рдпрд╛ рдЬрд░реНрдирд▓ рдИрд╡реЗрдВрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП, Logger.Backend рдХреЗ рдЗрд╕реА Logger.Backend ред


рдпрд╣рд╛рдБ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЕрдВрд╢ рд╣реИ:


Logger рд╡рд┐рднрд┐рдиреНрди рдмреИрдХреЗрдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдмреИрдХрдПрдВрдб рдПрдХ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВ:
  • :console - :console рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо)


рдХреЛрдИ рднреА рдбреЗрд╡рд▓рдкрд░ Logger рд▓рд┐рдП рдПрдХ рдмреИрдХрдПрдВрдб рдХреА рддрд░рд╣ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реАрдк рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ Logger рдПрдХ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рд╣реИ рдЬреЛ :gen_event рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ :gen_event рд╡реНрдпрд╡рд╣рд╛рд░, рдПрдХ рдирдпрд╛ рдмреИрдХрдПрдВрдб рд▓рд┐рдЦрдирд╛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдХреА рдмрд╛рдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ :gen_event ред

рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП :backends рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ :backends рдЕрдиреБрднрд╛рдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП :logger ред


рд╕рдмрд╕реЗ рдЖрдо рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ hex.pm рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИ, hex.pm рдкреИрджрд╛ рдХрд░рдирд╛ рд╣реИред Logger.Backend , рдЬреЛ Logger.Backend рдХрдВрд╕реЛрд▓ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ рдФрд░ рдереВрдХрддрд╛ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡рд╣рд╛рдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд▓реЙрдЧ рдбрд┐рд▓реАрд╡рд░реА рдХреЛ рдкреЗрдВрдЪ рдХрд░рддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ LaaS ) ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рд▓реЙрдЧ рдЖрдорддреМрд░ рдкрд░ рдПрдХ NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХ , рдпрд╛ рдХреБрдЫ рд╕рдорд╛рдиред


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


рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбрд░рд╛рд╡рдиреА :telemetry.execute/2 рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ: рд╣рдо рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ :telemetry.execute/2 рдЬрдм рднреА рдЖрд╡реЗрджрди рдореЗрдВ рдХреБрдЫ рдорд╛рдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╢реБрд░реВ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Telemetry.Poller рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдореАрдЯреНрд░рд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдЬрд┐рд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдерд╛ рд╡рд╣ рдЖрдВрддрд░рд┐рдХ рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕реЗ Logger.log/3 рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред


Gelato


рдореБрдЭреЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд╕реЗ рдирдлрд░рдд рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рддрдХ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдбреНрд░реИрдЧ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░, рд╢реЗрдбреНрдпреВрд▓рд░ рдФрд░ рд╡рд░реНрдХрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреВрдВ рднреА рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдХреНрд╕рд░ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЛ рдЫреЛрдЯреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдкреИрдХ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪреНрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬрд┐рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП report("message", payload) рд░реВрдк рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЗрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╣рдорд╛рд░реЗ рд▓реЛрдЪрджрд╛рд░ рднрдВрдбрд╛рд░рдг рдореЗрдВ рднреЗрдЬреЗрдВред


рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред


рд╣рдордиреЗ рдорд╛рдирдХ Logger рдХреЙрд▓ рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрджрд▓рдХрд░ рд╣рдо рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХреЗрдВред рдмрд╕ рдПрдХ рдирдпрд╛ Logger.Backend рдЬреЛрдбрд╝реЗрдВред рдПрдХ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдПрдБ:


 config :logger, backends: [Our.Fancy.Logger.Backend] 

- рдФрд░ voil├а - рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдЕрдм рдПрдХ рд▓реЛрдЪрджрд╛рд░ рдмрдВрдХрд░ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред


рдФрд░ рдЗрд╕рд▓рд┐рдП Gelato рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдареЛрд░ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдЧреВрдврд╝ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВред рдХреНрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╢рд░реНрддреЛрдВ рдкрд░ рдЖрдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд┐рд▓реЗрдЯреЛ (рд╕реНрдкреЗрдирд┐рд╢ рдореЗрдВ - рдЖрдЗрд╕рдХреНрд░реАрдо, рд╡реИрд╕реЗ) рд▓реЛрдЪ рдХреЗ рд╕рд╛рде рднреА рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реИред


рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд╣реБрдд рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдореИрдВ рд╕рд╣реА рджреБрдирд┐рдпрд╛ рдХреИрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдкреВрдВрдЫ рдФрд░ рдЕрдпрд╛рд▓ рдореЗрдВ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдКрдкрд░ рдХрдиреНрд╡реЗрдВрд╢рди" рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХреЛ рдПрдХ JSON рдореЗрдВ рдкреИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд░рд▓ HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдкреНрд░реА-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд▓реЛрдЪрджрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рднреА рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ Process.info/1 , рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдореИрдЯреНрд░рд┐рдХреНрд╕ред


рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ config/releases.exs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:


 config :gelato, uri: "http://127.0.0.1:9200", # Elastic API endoint events: [:foo, :bar], # attached telemetry events handler: :elastic # or :console for tests config :logger, backends: [Gelato.Logger.Backend], level: :info 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА Logger.log/3 рдХреЙрд▓ рдХреЛ telemetry рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд▓реЛрдЪрджрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред


 Logger.info "foo", question: "why?", answer: 42, now: System.monotonic_time(:microsecond) 

рдкреБрд╕реНрддрдХрд╛рд▓рдп Gelato.bench/4 рдореИрдХреНрд░реЛ рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмреНрд▓реЙрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ Logger.log/3 рдХреЛ рджреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ: рдмреНрд▓реЙрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдФрд░ рдЗрд╕рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рджреВрд╕рд░рд╛, рдЬрд╛рд╡рд╛ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВред


Gelato рд╡рд┐рдиреАрдд рд░реВрдк рд╕реЗ Gelato.defdelegatelog/2 рдореИрдХреНрд░реЛ, рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ Gelato.bench/4 рдФрд░ Kernel.defdelegate/2 . Kernel.defdelegate/2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмреЗрд╣рддрд░ рд╕рдВрдЧрдарди рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕реАрдорд┐рдд рд╕реНрддрд░ рдХреЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рдХреЙрд▓реЛрдВ рдХреЛ рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рд╕реЗ рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


Envi╠Бo.Log


рдПрдХ рдФрд░ Logger.Backend рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рдорд╛рд░реЗ рддрдХрдиреАрдХреА рдЬреБрдиреВрди рдХреЗ рдХреЛрдиреЗ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ рдЬреЛ Envi╠Бo.Log ред рдпрд╣ рд╕рдорд░реНрдкрд┐рдд рд╕реНрд▓реИрдХ рдЪреИрдирд▓ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП Envi╠Бo рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ log_level рдЕрдкрдиреА log_level рд╕реЗрдЯрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдЖрдорддреМрд░ рдкрд░ :warn рдпрд╛ :error рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рд╕реНрд▓реИрдХ рдЪреИрдирд▓ рдХреЛ рд╕реНрдкреИрдорд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╕реЗ рдХрдо рд╕реНрддрд░ рдкрд░ рд╕рднреА рдХреЙрд▓ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди BEAM рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред


рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдиреНрдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:


 config :envio, :log, level: :warn, # do not send :info to Slack process_info: false # do not attach process info config :logger, backends: [Envio.Log.Backend], level: :debug config :envio, :backends, %{ Envio.Slack => %{ {Envio.Log.Publisher, :info} => [ hook_url: {:system, "YOUR_SLACK_CHANNEL_API_ENDPOINT"} ] } } 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рд╕рднреА Logger.{warn,error}/2 рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ Logger.{warn,error}/2 рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд▓реИрдХ рдЪреИрдирд▓ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред


рдПрдХ рдЕрдЪреНрдЫреА рд▓реЙрдЧрд┐рдВрдЧ рд╣реИ!

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


All Articles