Conclusion: lisez correctement la documentation lors de l'utilisation de l'API (´ ・ ω ・ `)
Les langages go log.Fatal
, log.Fatalf
et log.Fatalln
sortent os.Exit (1)
après la sortie du message et essaient de terminer le processus. Par exemple, si vous disposez du programme suivant:
main.go
package main
import (
"fmt"
"log"
)
func main() {
fmt.Println("BEFORE")
log.Fatalln("FATAL")
fmt.Println("AFTER")
}
Si vous construisez et exécutez ceci, vous verrez que le programme s'est terminé avec l'état de sortie 1 après avoir sorti FATAL
( AFTER
n'a pas été sorti).
$ go build .
$
$ ./fataltest
BEFORE
2020/11/15 21:02:55 FATAL
$
$ echo $?
1
Certains autres langages de programmation et bibliothèques ont FATAL comme niveau de journalisation. En bref, si vous utilisez une fonction du type log.Fatal
en pensant" Est-ce celle qui produit le journal de niveau FATAL! ", Cela peut provoquer un bug inattendu - ou plutôt, je l'ai fait. Réflexion)
référence