第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)閉具有延遲關(guān)閉的文件

關(guān)閉具有延遲關(guān)閉的文件

Go
慕沐林林 2023-07-10 10:07:19
在我的主函數(shù)中,我打開一個日志文本文件進行寫入,并使用延遲關(guān)閉方法在應(yīng)用程序退出后將其關(guān)閉。但是,在每個新的一天開始時,我希望開始寫入第二天的日志文件,并且我不知道如何關(guān)閉前一天的文件并開始寫入當(dāng)前的文件。在我的主要功能中:func main() {f, err := os.OpenFile("2019-07-24.txt", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0644)    if err != nil {        log.Fatalf("Error opening log file: %v", err)    }    defer f.Close()    log.SetOutput(f)}現(xiàn)在,當(dāng)我在新的一天收到另一個包裹中的消息時:func gateway() {f, err := os.OpenFile("2019-07-25.txt", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0644)    if err != nil {        log.Fatalf("Error opening log file: %v", err)    }    defer f.Close()    log.SetOutput(f)}如何從另一個包獲取指向前一天日志文件的指針,然后將其關(guān)閉(除非應(yīng)用程序完全關(guān)閉,否則不會調(diào)用延遲調(diào)用?
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

創(chuàng)建一個管理日志輸出的包。


package logoutput


package main


import (

    "io"

    "log"

    "sync"

)


var (

    mu            sync.Mutex

    curr io.WriteCloser

)


func Set(w io.WriteCloser) {

    mu.Lock()

    defer mu.Unlock()

    prev := curr

    curr = w

    log.SetOutput(curr)

    if prev != nil {

       prev.Close()

    }

}


func Close() {

    mu.Lock()

    defer mu.Unlock()

    log.SetOutput(os.Stderr) // revert to default

    if curr != nil {

       curr.Close()

    }

    curr = nil

}

從 main 和 gateway 包中調(diào)用該包。


f, err := os.OpenFile("2019-07-24.txt", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0644)

if err != nil {

    log.Fatalf("Error opening log file: %v", err)

}

logoutput.Set(f)

defer logoutput.Close() // call from main only


查看完整回答
反對 回復(fù) 2023-07-10
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號