Go でログ ファイルをリアルタイムで読み取る方法
Go で更新されるログ ファイルを解析するには、 github.com/hpcloud/tail からの tail パッケージ。これは、ファイルを繰り返し再読み込みすることなく、ファイル内の変更を追跡する便利な方法を提供します。
実装:
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) } }
切り捨てと名前変更の処理:
ログ ファイルの切り捨てと名前変更を処理するため (例: logrotate のため):
t, err := tail.TailFile("/var/log/nginx.log", tail.Config{ Follow: true, ReOpen: true, }) _ = t // Ignore return value for demonstration purposes
Config.ReOpen オプションは、tail コマンドの -F オプションに似ており、名前が変更されたり回転された場合にファイルを再度開きます。
制限事項:
tail パッケージは変更を検出するためにファイル サイズを監視しますが、変更は処理しないことに注意してください。ファイルの削除などのすべてのシナリオ。より堅牢な処理を行うには、専用プロセス (inotify など) またはログ管理システムを使用してファイルを監視することを検討してください。
以上が`tail` パッケージを使用して Go でログ ファイルをリアルタイムに解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。