Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang membaca kandungan fail log dalam direktori

golang membaca kandungan fail log dalam direktori

PHPz
PHPzke hadapan
2024-02-05 23:51:07825semak imbas

golang membaca kandungan fail log dalam direktori

Kandungan soalan

Saya cuba membaca semua fail log dalam direktori, kod di bawah boleh membaca nama fail tetapi bukan kandungannya.

Keluaran konsol

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)
                }
        
            }

Jawapan betul


file.name() Mengembalikan hanya fail nama asas fail.

filepath.abs​​()filepath.abs​​() 将加入给定路径,在本例中为文件的基本名称,到当前工作目录。因此,返回的 abs 值将缺少文件路径的 ./logs/ akan menambah laluan yang diberikan, dalam kes ini nama asas fail, ke direktori kerja semasa. Oleh itu, nilai abs yang dikembalikan akan tiada segmen ./logs/ laluan fail.

Untuk membetulkan isu ini, anda boleh melakukan perkara berikut:

abs, err := filepath.abs(filepath.join("logs", file.name()))

Sebagai alternatif, anda boleh menggunakan filepath.walkdirfilepath.walkdir,它提供了fn, yang menyediakan laluan fail untuk parameter fn.

err := filepath.WalkDir("./logs/", func(path string, de fs.DirEntry, err error) error) {
    if err != nil {
        return err
    } else if de.IsDir() {
        return nil
    }

    file, err := os.Open(path)
    // ...
    return nil
}) 

Atas ialah kandungan terperinci golang membaca kandungan fail log dalam direktori. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam