рдпрд╣ рдкреЛрд╕реНрдЯ рдиреИрдЯ рдлрд┐рдВрдЪ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП
рдЧреЛ рдлреЛрд░рдо рд╡рд┐рд╖рдп рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИред рдпрд╣ рдкреЛрд╕реНрдЯ рдЧреЛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдЖрдЧреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдЪрд╛рд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реИрдВред
рдкреНрдпрд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?
рдЧреЛ рдореЗрдВ рд▓реЙрдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд▓реЙрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрддрд░ рдирд╣реАрдВ рд╣реИ; рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ DEBUG, INFO, WARN рдФрд░ ERROR рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЙрдкрд╕рд░реНрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреЛ рдореЗрдВ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреНрд░рдХрд╛рд░ рдЪрдпрдирд┐рдд рд╕рдВрдХреБрд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдЗрди рд╕реНрддрд░реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдХреБрдЫ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рджреЗрдЦреЗрдВред

Google
glog рдХреЗ рд╕реНрддрд░ рд╣реИрдВ:
- рдЬрд╛рдирдХрд╛рд░реА
- рдЪреЗрддрд╛рд╡рдиреА
- рддреНрд░реБрдЯрд┐
- рдШрд╛рддрдХ (рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ)
рдЖрдЗрдП,
рдЬреБрдЬреВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп,
рд▓реЙрдЧрдЧреЛ рдХреЛ рджреЗрдЦреЗрдВ ,
рдЗрд╕рдореЗрдВ рд╕реНрддрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
- рдирд┐рд╢рд╛рди
- рдбрд┐рдмрдЧ
- рдЬрд╛рдирдХрд╛рд░реА
- рдЪреЗрддрд╛рд╡рдиреА
- рддреНрд░реБрдЯрд┐
- рдЧрдВрднреАрд░
рд▓реЙрдЧрдЧреЛ рдХреЗ рдкрд╛рд╕ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕реНрддрд░ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рд╣реИред
рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рджреЛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдирдХреЗ рдореВрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╛рдкрд╕ (3), рд╕рдВрднрд╡рддрдГ рдкрд╣рд▓реЗ рднреАред рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЧрд▓рдд рд╣реИрдВред
рдореИрдВ рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╕реНрдерд┐рддрд┐ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рд▓реЙрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЦрд░рд╛рдм рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ; рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╕реЗрдЯ, рдЬреЛ рдЙрд╕ рд╕рдордп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реНрддрдмреНрдз рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬрдм рдЙрд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкрд╛рдардХ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВ, рдЗрди рдкрддреНрд░рд┐рдХрд╛рдУрдВ рдХреЛ рдХреМрди рджреЗрдЦреЗрдЧрд╛ред
рдореЗрд░рд╛ рддрд░реНрдХ рд╣реИ рдХрд┐ рд╕рдлрд▓ рд▓реЙрдЧ рдкреИрдХреЗрдЬ рдХреЛ рдмрд╣реБрдд рдХрдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдо рд╕реНрддрд░ред
рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ (рдЪреЗрддрд╛рд╡рдиреА)
рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рд▓реЙрдЧ рд╕реНрддрд░ (рдЪреЗрддрд╛рд╡рдиреА) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдХреЛрдИ рднреА рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБ-рд╕реНрддрд░реАрдп рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЖрдк INFO рдпрд╛ ERROR рдХреЗ рд╕реНрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЪреЗрддрд╛рд╡рдиреА рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЪреЗрддрд╛рд╡рдиреА рд╕реНрддрд░ рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЪреЗрддрд╛рд╡рдиреА рд╕реНрддрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ - рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢ рд╣реИ, рдпрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред
рдЖрдЗрдП рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реНрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ
FATAL рд╕реНрддрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ os.Exit (1) рдХрд╣рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ:
- рдЕрдиреНрдп рджрд┐рдирдЪрд░реНрдпрд╛ (goroutines) рдореЗрдВ рдЖрд╕реНрдердЧрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдмрдлрд╝рд░реНрд╕ рдлреНрд▓рд╢ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ;
- рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, log.Fatal рдХрдо рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рдмреНрджрд╛рд░реНрде рдШрдмрд░рд╛рд╣рдЯ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдШрдмрд░рд╛рд╣рдЯ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд▓реЙрдЧ.рдлрд╝рд╛рд▓ 2 рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╣реА рдкреНрд░рднрд╛рд╡ рд╣реИ, рддреЛ рдЗрд╕реЗ рднреА рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдзрд╛рд░рдгрд╛ рдХрд┐ рд▓реЙрдЧрд░ рдореЗрдВ рд╢рдЯрдбрд╛рдЙрди рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдХреЗ рдЗрд╕ рд╕рдлрд╛рдИ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд▓реЙрдЧрд░ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЬрдЧрд╣ рдХреЗ рдмреАрдЪ рдПрдХ рдХрд░реАрдмреА рд╕рдВрдмрдВрдз рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдлрд╛рдИ рд╕рдВрдЪрд╛рд▓рди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╣рд┐рддреЛрдВ рдХреЗ рдкреГрдердХреНрдХрд░рдг рдХрд╛ рднреА рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред
рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ FATAL рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рди рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЙрд▓рд░ рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рддреНрд░реБрдЯрд┐ main.main рддрдХ рдкрд╣реБрдБрдЪрддреА рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рдХреНрд▓реАрдирдЕрдк рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред
рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ (ERROR рд╕реНрддрд░)
рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ рд▓реЙрдЧрд┐рдВрдЧ (ERROR) рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВред
Go рдореЗрдВ, рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдореЗрдердб рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд╛рди рджреЗрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
- рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВред
- рдЗрд╕рдХреЗ рдХреЙрд▓рд░ рдкрд░ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдВред рдЖрдк рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдЧрд┐рдлреНрдЯ рд░реИрдкрд┐рдВрдЧ (рд▓рдкреЗрдЯ) рдореЗрдВ рдЧрд▓рддреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк рд▓реЙрдЧ рдореЗрдВ рдЗрд╕реЗ рд▓рд┐рдЦрдХрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдЕрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ - рдЖрдкрдиреЗ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИ; рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╕рд╛рде рдордирд╛рдЗрдП:
err := somethingHard() if err != nil { log.Error("oops, something was too hard", err) return err
рдЖрдкрдХреЛ рдХрднреА рднреА рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ рдкрд░ рдХреБрдЫ рднреА рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдпрд╛ рддреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЗрд╕реЗ рдХреЙрд▓рд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рд▓реЙрдЧ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдПрдХ рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реИ:
if err := planA(); err != nil { log.Infof("could't open the foo file, continuing with plan b: %v", err) planB() }
рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, log.Info рдФрд░ log.Error рдХрд╛ рдПрдХ рд╣реА рд▓рдХреНрд╖реНрдп рд╣реИред
рдореИрдВ рдирд╣реАрдВ рдХрд╣рддрд╛ "рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рди рдХрд░реЗрдВ"! рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рд╕рд╡рд╛рд▓ рдкреВрдЫрддрд╛ рд╣реВрдВ, рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╕рдВрднрд╡ рдПрдкреАрдЖрдИ рдХреНрдпрд╛ рд╣реИ? рдФрд░ рдЬрдм рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ ERROR рд╕реНрддрд░ рдкрд░ рджрд░реНрдЬ рдХреА рдЧрдИ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреАрдЬреЗрдВ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХреА рдЧрдИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рддреНрд░реБрдЯрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ рд╕рд┐рд░реНрдл рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рд╕реЗ рддреНрд░реБрдЯрд┐-рд╕реНрддрд░ рд▓реЙрдЧрд┐рдВрдЧ (ERROR) рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдмрдЪрд╛ рд╣реИ?
рд╣рдордиреЗ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рддрд░реНрдХ рджрд┐рдпрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕реНрддрд░ (ERROR) рдкрд░ рдХреБрдЫ рднреА рд▓реЙрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓реЙрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдШрд╛рддрдХ рд╡реНрдпрд╡рд╣рд╛рд░ред рдХреНрдпрд╛ рдмрдЪрд╛ рд╣реИ?
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рджреЛ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдЬрдм рд╡реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдпрд╛ рдбрд┐рдмрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрд░рд╡рд╛рд╣ рд╣реЛрддреА рд╣реИ;
- рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рди рдЪреАрдЬреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпреЗ рдХреНрд░рдорд╢рдГ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реНрддрд░ (DEBUG) рдФрд░ рд╕реВрдЪрдирд╛рддреНрдордХ (INFO) рд╣реИрдВред
log.Info рдХреЛ рдмрд╕ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ main.main рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рд╕реЗ рдкрд╣рд▓реЗ FATAL рдЙрдкрд╕рд░реНрдЧ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдпрд╛ рд╕реАрдзреЗ os.Stderr рдХреЛ fmt.Fprintf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХреА рдорд╛рдореВрд▓реА рдЕрд╕реБрд╡рд┐рдзрд╛ рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдШрд╛рддрдХ рд╡рд┐рдзрд┐ред
log.Debug, рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИред рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдпрд╛ рд╕рдорд░реНрдерди рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдЯреНрд░реЗрд╕ рд╕реНрддрд░ рдпрд╛ рдбреАрдмрдЧ 2 рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛ рдбрд┐рдмрдЧ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрдИ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреМрди рд╣реИрдВ)ред рд▓реЙрдЧрд┐рдВрдЧ рдкреИрдХреЗрдЬ рдХреЛ рдкреИрдХреЗрдЬ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛ рд╢рд╛рдпрдж рд╕рдВрдХреАрд░реНрдг рджрд╛рдпрд░реЗ рдореЗрдВ рднреА, рдбрд┐рдмрдЧ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╛рдиреЗрджрд╛рд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдпрд╣ рдПрдХ рдЯреНрд╡рд┐рдЯрд░ рдкреЛрд▓ рдерд╛, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдмреАрдЪ рдореЗрдВ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реВрдВрдЧрд╛
- рд▓реЙрдЧрд┐рдВрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ
- рд▓реЙрдЧрд┐рдВрдЧ рдХрдард┐рди рд╣реИ
рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд▓реЙрдЧрд┐рдВрдЧ рджреЛрдиреЛрдВ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдирд╖реНрдЯ рд╣реЛрдирд╛ рдФрд░ рдирд┐рд░реНрджрдпрддрд╛ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рдХрд░реНрд╖рдг рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЕрд╕рд╛рдзрд╛рд░рдг рд╣реИ?
рдиреЛрдЯ
рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдВрддрд░рд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рддрдВрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШрдмрд░рд╛рд╣рдЯ / рдЙрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдордВрддреНрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЗрди рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреИрдХреЗрдЬ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рд┐рд╕рд╛рд╡ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред
рд╡рд┐рдбрдВрдмрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдбреЗрдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрддрд░ рдирд╣реАрдВ рд╣реИ, рдорд╛рдирдХ рдЧреЛ рд▓реЙрдЧрд┐рдВрдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рдлреИрдЯрд▓ рдФрд░ рдкреИрдирд┐рдХ рдлреАрдЪрд░реНрд╕ рд╣реИрдВред рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЕрдЪрд╛рдирдХ рд╕рдорд╛рдкреНрддрд┐ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ
рдбреЗрд╡ рдЪреЗрдиреА , рдЧреЛ рдХреЗ рд▓рд┐рдП рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓реЗрдЦрдХ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
github.com/pkg/errors рдФрд░
github.com/davecheney/httpstat ред рдЖрдк рд▓реЗрдЦрдХ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдФрд░ рдЕрдиреБрднрд╡ рдХрд╛ рд╕реНрд╡рдпрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ, рдХреБрдЫ
рдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдХрд╛рд░рдЧрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рд▓реЙрдЧрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ
рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд┐рдпрд╛ред рд▓реЛрдЧреЛрдВ рдиреЗ рднреА рдЙрдирдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП
рдХрд╛рдЧрдЬ рд░рдЦ рджрд┐рдпрд╛ред
рдкреНрд▓рд╕ рдкреНрд░рд╕реНрддреБрддрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм
рдХреНрдпрд╛ рд╣рдореЗрдВ рдПрдХ рдирдП рд▓рдХрдбрд╝рд╣рд╛рд░реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрд░рд┐рд╕ рд╣рд╛рдЗрдиреНрд╕ рд╕реЗред
рдбреЗрд╡ рдХреЗ
рдЧреЛ-рд▓реЙрдЧ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ ERROR рд╕реНрддрд░ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдереЛрдбрд╝рд╛ рдСрдл-рдЯреЙрдкрд┐рдХ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд
рд▓реЙрдЧрд░ рдкреИрдХреЗрдЬ рд╣реИрдВред