Про логування
Файл логу (log file) - файл, у який програма автоматично записує інформацію про події, що виникають в процесі її роботи. Логування програмної інформації використовується для аудиту, профілювання, збору статистики і, найчастіше, для виявлення причини збоїв у роботі програм.
https://dev.to/grhegde09/logging-done-right-makes-your-life-brightСпособи логування можуть відрізнятись в залежності від типу ПЗ, що генерує файли логу. Деякі desktop-додатки генерують такі файли лише при аварійному завершенні програми. Серверні додатки зазвичай логують будь-яку активність.
Логування дозволяє зберігати інформацію про стани та поведінку програмної системи до її аварійного завершення чи виявлення некоректної роботи.
Якщо у користувача з'явилися проблеми із вашою програмою, що встановлена на його комп'ютері, можна отримати від нього файли з логами для дослідження аномалій у роботі програми.
Якщо ваш веб-сервер аварійно завершив свою роботу - ви можете дослідити збережену інформацію про запити, що спричинили проблему і виправити її.
Звичайно, постає питання: що і коли логувати.
В залежності від важливості і типу події розподіляють по рівнях логування. На практиці найчастіше використовують рівні ERROR, WARN, INFO, DEBUG та TRACE:
https://stackoverflow.com/a/8021604Не варто логувати конфіденційну інформацію користувачів: паролі, номери банківських карт, номери соціального страхування та ін.
Детально про те, що потрібно і непотрібно логувати можна почитати тут:
https://www.owasp.org/index.php/Logging_Cheat_SheetНедостаток інформації у логах не дозволить виявити причину поломки, надлишок логів ускладнює їх обробку і може призвести до зниження швидкодії програми та до створення програмою лог-файлів, розмір яких може сягати гігабайтів (за словами знайомого працівника відділу підтримки користувачів, був випадок коли файл логів займав 50 Гб!).
Для вирішення проблеми зростання розміру логів можна використовують метод кільцевого буфера (ring buffer):
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.31.6746&rep=rep1&type=pdfПеред тим як вам знадобиться додавати у програму свої перші логи прочитайте 10 заповідей логування:
http://www.masterzen.fr/2013/01/13/the-10-commandments-of-logging/Першим пунктом у заповідях йде дуже хороша порада: використовуйте стандартні можливості логування середовища або спеціалізовані бібліотеки. Наприклад, для розробки C#/.NET підійде чудовий NuGet пакет NLog, а для автоматичного логування HTTP запитів Express.js пакет morgan:
http://nlog-project.org/https://github.com/expressjs/morganДля обробки згенерованих логів і пошуку інформації у них можна використовувати стандартні текстові редактори та силу регулярних виразів, або більш спеціалізовані засоби, наприклад, lnav:
http://lnav.org/