1 回答
TA贡献1875条经验 获得超3个赞
创建一个管理日志输出的包。
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 包中调用该包。
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
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报