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

golang membaca kandungan fail log dalam direktori

PHPz
Lepaskan: 2024-02-05 23:51:07
ke hadapan
839 orang telah melayarinya

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)
                }
        
            }
Salin selepas log masuk


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()))
Salin selepas log masuk

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
}) 
Salin selepas log masuk

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

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan