Suche…


Einführung

Die Protokollierung in Haskell wird normalerweise durch Funktionen in der IO Monade erreicht und ist daher auf nicht reine Funktionen oder "E / A-Aktionen" beschränkt.

Es gibt verschiedene Möglichkeiten, Informationen in einem Haskell-Programm zu protokollieren: von putStrLn (oder print ) über Bibliotheken wie hslogger oder über Debug.Trace .

Protokollierung mit hslogger

Das hslogger Modul bietet eine ähnliche API wie das logging Framework von Python und unterstützt hierarchisch benannte Logger, Ebenen und Umleitungen für Handles außerhalb von stdout und stderr .

Standardmäßig werden alle Meldungen der Stufe WARNING und höher an stderr gesendet und alle anderen Protokollebenen werden ignoriert.

import           System.Log.Logger (Priority (DEBUG), debugM, infoM, setLevel,
                                    updateGlobalLogger, warningM)

main = do
  debugM "MyProgram.main" "This won't be seen"
  infoM "MyProgram.main" "This won't be seen either"
  warningM "MyProgram.main" "This will be seen"

Wir können den Pegel eines Loggers mit updateGlobalLogger anhand seines Namens updateGlobalLogger :

  updateGlobalLogger "MyProgram.main" (setLevel DEBUG)

  debugM "MyProgram.main" "This will now be seen"

Jeder Logger hat einen Namen und diese sind hierarchisch angeordnet, sodass MyProgram ein übergeordnetes MyParent.Module von MyParent.Module .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow