Fish Shell:
Логування

Як це робити:

В Fish логування може бути таким простим, як перенаправлення стандартних потоків виведення і помилок у файл. Створимо запис у журналі для часу початку і кінця нашого скрипту.

function log_start
  echo (date "+%Y-%m-%d %H:%M:%S") " - Скрипт розпочато" >> my_app.log
end

function log_end
  echo (date "+%Y-%m-%d %H:%M:%S") " - Скрипт завершено" >> my_app.log
end

log_start
# ... завдання вашого скрипту ...
log_end

cat my_app.log

Ось, що ви побачите в my_app.log:

2023-04-01 10:35:47  - Скрипт розпочато
2023-04-01 10:36:02  - Скрипт завершено

Для розширеного логування ви можете використовувати функції з параметрами для рівня логу і повідомлень:

function log_message --argument message
  switch "$argv[1]"
    case 'INFO' 'WARN' 'ERROR'
      set log_level $argv[1]
    case '*'
      set log_level 'DEBUG'
  end
  set log_msg (string join " " $argv[2..-1])
  echo (date "+%Y-%m-%d %H:%M:%S") "[$log_level]" $log_msg >> my_app.log
end

log_message INFO "Це інформаційне повідомлення."
log_message ERROR "Щось пішло не так!"

Приклад виведення у my_app.log буде:

2023-04-01 10:35:47 [INFO] Це інформаційне повідомлення.
2023-04-01 10:35:49 [ERROR] Щось пішло не так!

Поглиблене вивчення

Історично логування в сценаріях командної оболонки виконувалось за допомогою безлічі команд echo, і це все ще залишається варіантом, але реалізація більш складних систем може бути викликом. Fish не має вбудованого механізму логування, як деякі інші командні оболонки чи мови програмування, тому часто потрібно створювати свій власний.

Альтернативи вбудованій команді echo у Fish для логування включають універсальні інструменти Unix, такі як syslog чи logger, які взаємодіють із системним демоном логування, забезпечуючи більш інтегрований підхід до логування системних подій.

Простота Fish дозволяє вам створювати функції для обробки гучності логування, встановлюючи різні рівні, які ви можете перемикати. Деякі реалізації навіть можуть включати ім’я скрипту, номер рядка та часову мітку, що полегшує прослідження кроків, які призвели до події.

Дивіться також