ホームページ >バックエンド開発 >Golang >golang はディレクトリ内のログ ファイルの内容を読み取ります。

golang はディレクトリ内のログ ファイルの内容を読み取ります。

PHPz
PHPz転載
2024-02-05 23:51:07841ブラウズ

golang はディレクトリ内のログ ファイルの内容を読み取ります。

質問の内容

ディレクトリ内のすべてのログ ファイルを読み取ろうとしていますが、以下のコードではファイル名は読み取れますが、その内容は読み取れません。

コンソール出力

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 サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。