ディレクトリ内のすべてのログ ファイルを読み取ろうとしていますが、以下のコードではファイル名は読み取れますが、その内容は読み取れません。
コンソール出力
ds-api-doc-.log false 2023/03/21 11:27:11 open /Users/xxx/ds-api-doc.log: no such file or directory files, err := ioutil.ReadDir("./logs/") if err != nil { log.Fatal(err) } fmt.Println(totalTicks) for _, file := range files { fmt.Println(file.Name(), file.IsDir()) abs, err := filepath.Abs(file.Name()) file, err := os.Open(abs) if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal(err) } }
file.name()
ファイルのベース名のみを返します。
filepath.abs ()
は、指定されたパス (この場合はファイルのベース名) を現在の作業ディレクトリに追加します。したがって、返される abs
値には、ファイル パスの ./logs/
セグメントが欠落します。
この問題を解決するには、次のことを実行できます:
リーリーまたは、fn パラメータのファイル パスを提供する
filepath.walkdir を使用することもできます。
以上がgolang はディレクトリ内のログ ファイルの内容を読み取ります。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。