如何在golang中将日志写入多个日志文件?

时间:2019-02-22 05:05:20

标签: go

我正在编写一个应用程序,其中需要将日志记录在两个不同的文件中。例如 weblogs .go和 debuglogs.go 。我尝试使用 log4go ,但是我的要求是我需要在主文件中创建记录器,并且需要在子目录中访问记录器,因为解码和记录的主要工作都在子文件中完成。有人可以帮忙吗?

1 个答案:

答案 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!!")
}

注意:

  1. io.MultiWriter用于将多个编写器组合在一起。在这里,它创建了一个写入器w-对w的写入将进入os.Stdout以及两个文件
  2. log.New使我们可以使用自定义编写器创建新的log.Logger对象
  3. log.Logger对象可以传递给函数,并由它们用来记录事物