我正在编写一个应用程序,其中需要将日志记录在两个不同的文件中。例如 weblogs .go和 debuglogs.go 。我尝试使用 log4go ,但是我的要求是我需要在主文件中创建记录器,并且需要在子目录中访问记录器,因为解码和记录的主要工作都在子文件中完成。有人可以帮忙吗?
答案 0 :(得分:1)
这是使用标准log
软件包的一种方法:
package main
import (
"io"
"log"
"os"
)
func main() {
f1, err := os.Create("/tmp/file1")
if err != nil {
panic(err)
}
defer f1.Close()
f2, err := os.Create("/tmp/file2")
if err != nil {
panic(err)
}
defer f2.Close()
w := io.MultiWriter(os.Stdout, f1, f2)
logger := log.New(w, "logger", log.LstdFlags)
myfunc(logger)
}
func myfunc(logger *log.Logger) {
logger.Print("Hello, log file!!")
}
注意:
io.MultiWriter
用于将多个编写器组合在一起。在这里,它创建了一个写入器w
-对w
的写入将进入os.Stdout
以及两个文件log.New
使我们可以使用自定义编写器创建新的log.Logger
对象log.Logger
对象可以传递给函数,并由它们用来记录事物