Fish Shell:
Lokitus

Miten:

Fishissä lokitus voi olla yksinkertaista kuin standarditulosteiden ja -virheiden ohjaaminen tiedostoon. Tehdään lokimerkintä skriptimme aloitus- ja lopetusaikoihin.

function log_start
  echo (date "+%Y-%m-%d %H:%M:%S") " - Skripti alkoi" >> my_app.log
end

function log_end
  echo (date "+%Y-%m-%d %H:%M:%S") " - Skripti päättyi" >> my_app.log
end

log_start
# ... skriptisi tehtävät ...
log_end

cat my_app.log

Tältä näyttäisi my_app.log-tiedostossa:

2023-04-01 10:35:47  - Skripti alkoi
2023-04-01 10:36:02  - Skripti päättyi

Edistyneempään lokitukseen voit käyttää funktioita, joilla on parametrit lokitasolle ja viesteille:

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 "Tämä on informaatioviesti."
log_message ERROR "Jotain meni pieleen!"

Näyte my_app.log-tulosteesta on:

2023-04-01 10:35:47 [INFO] Tämä on informaatioviesti.
2023-04-01 10:35:49 [ERROR] Jotain meni pieleen!

Syväsukellus

Historiallisesti lokitusta shell-skripteissä on toteutettu joukolla echo-komentoja, ja vaikka tämä on edelleenkin vaihtoehto, monimutkaisempien järjestelmien toteuttaminen voi olla haasteellista. Fishillä ei ole sisäänrakennettua lokitusmekanismia kuten joillakin muilla kuorilla tai ohjelmointikielillä, joten usein sinun täytyy toteuttaa omat ratkaisusi.

Vaihtoehtoja Fishin sisäänrakennetulle echo-komennolle lokitukseen sisältävät Unix-työkalut kuten syslog tai logger, jotka yhdistävät järjestelmän lokidaemoniin, tarjoten integroidumman lähestymistavan järjestelmänlaajuiseen lokitukseen.

Fishin yksinkertaisuus mahdollistaa funktioiden luomisen lokituksen verbaalisuuden käsittelyyn, asettamalla eri tasoja, joita voit kytkeä päälle tai pois. Jotkin toteutukset voivat sisältää jopa skriptin nimen, rivinumeron ja aikaleiman, mikä helpottaa tapahtumiin johtaneiden vaiheiden jäljitettävyyttä.

Katso myös