Fish Shell:
Loggføring

Hvordan gjøre det:

I Fish kan logging være så enkelt som å omdirigere standard ut- og feilstrømmer til en fil. La oss lage en loggpost for vår skripts start- og slutttider.

function log_start
  echo (date "+%Y-%m-%d %H:%M:%S") " - Skriptet startet" >> min_app.log
end

function log_end
  echo (date "+%Y-%m-%d %H:%M:%S") " - Skriptet avsluttet" >> min_app.log
end

log_start
# ... din skripts oppgaver ...
log_end

cat min_app.log

Her er hva du ville se i min_app.log:

2023-04-01 10:35:47  - Skriptet startet
2023-04-01 10:36:02  - Skriptet avsluttet

For avansert logging kan du bruke funksjoner med parametere for loggnivå og meldinger:

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 >> min_app.log
end

log_message INFO "Dette er en informativ melding."
log_message ERROR "Noe gikk galt!"

Eksempel min_app.log utskrift vil være:

2023-04-01 10:35:47 [INFO] Dette er en informativ melding.
2023-04-01 10:35:49 [ERROR] Noe gikk galt!

Dypdykk

Historisk var logging i skript vanligvis gjort med en haug echo-statements, og mens dette sikkert fortsatt er et alternativ, kan implementering av mer komplekse systemer være en utfordring. Fish har ikke en innebygd loggingsmekanisme som noen andre shells eller programmeringsspråk har, så ofte må man lage sin egen.

Alternativer til Fish sin innebygde echo-kommando for logging inkluderer Unix-verktøy som syslog eller logger, som samhandler med systemloggdaemonen, og gir en mer integrert tilnærming til logging av systemomfattende hendelser.

Fish sin enkelhet gjør at du kan opprette funksjoner for å håndtere loggingsdetaljenivået, å sette forskjellige nivåer som du kan skru av eller på. Noen implementeringer kan til og med inkludere navnet på skriptet, linjenummer, og tidsstempel, som gjør det lettere å spore tilbake trinnene som førte til en hendelse.

Se også