Comment lire les fichiers journaux en temps réel dans Go
Pour analyser les fichiers journaux au fur et à mesure de leur mise à jour dans Go, pensez à utiliser l'outil package tail sur github.com/hpcloud/tail. Il fournit un moyen pratique de suivre les modifications apportées à un fichier sans le relire à plusieurs reprises.
Mise en œuvre :
import ( "fmt" "github.com/hpcloud/tail" ) func main() { // Open the log file for tailing t, err := tail.TailFile("/var/log/nginx.log", tail.Config{Follow: true}) if err != nil { panic(err) } // Process new log lines as they are written for line := range t.Lines { fmt.Println(line.Text) } }
Gestion de la troncature et du changement de nom :
Pour gérer la troncature et le renommage des fichiers journaux (par exemple, en raison de logrotate):
t, err := tail.TailFile("/var/log/nginx.log", tail.Config{ Follow: true, ReOpen: true, }) _ = t // Ignore return value for demonstration purposes
L'option Config.ReOpen est similaire à l'option -F de la commande tail, qui rouvre le fichier s'il est renommé ou pivoté.
Limitations :
Notez que même si le package tail surveille la taille du fichier pour détecter les modifications, il ne gère pas tous les scénarios, tels que le fichier suppression. Pour une gestion plus robuste, envisagez de surveiller le fichier à l'aide d'un processus dédié (par exemple, en utilisant inotify) ou en utilisant un système de gestion des journaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!