Fish Shell:
Loggning

Hur man gör:

I Fish kan loggning vara så enkelt som att omdirigera standard utdatan och felströmmar till en fil. Låt oss skapa en loggpost för vår scripts start- och sluttider.

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

function log_end
  echo (date "+%Y-%m-%d %H:%M:%S") " - Skript avslutades" >> my_app.log
end

log_start
# ... ditt skripts uppgifter ...
log_end

cat my_app.log

Så här skulle du se i my_app.log:

2023-04-01 10:35:47  - Skript startade
2023-04-01 10:36:02  - Skript avslutades

För avancerad loggning kan du använda funktioner med parametrar för loggnivå och meddelanden:

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 "Detta är ett informativt meddelande."
log_message ERROR "Något gick fel!"

Exempel på my_app.log-utdata:

2023-04-01 10:35:47 [INFO] Detta är ett informativt meddelande.
2023-04-01 10:35:49 [ERROR] Något gick fel!

Fördjupning

Historiskt sett gjordes loggning i skal-skript med en massa echo-påståenden, och även om detta verkligen fortfarande är ett alternativ, kan implementering av mer komplexa system vara en utmaning. Fish har inte en inbyggd loggningsmekanism som vissa andra skal eller programmeringsspråk gör, så du behöver ofta skapa din egen.

Alternativ till Fishs inbyggda echo-kommando för loggning inkluderar Unix-verktyg som syslog eller logger, vilka gränssnittar med systemloggdemonen, och tillhandahåller ett mer integrerat tillvägagångssätt för att logga systemomfattande händelser.

Fishs enkelhet låter dig skapa funktioner för att hantera detaljrikedomen i loggning, sätta olika nivåer som du kan aktivera eller avaktivera. Vissa genomföranden kan till och med inkludera namnet på skriptet, radnummer och tidsstämpel, vilket gör det enklare att spåra tillbaka de steg som ledde till en händelse.

Se även