如何让Go Fiber日志同时输出至标准输出与日志文件?
问题解答
Fiber内置的Logger中间件没有直接支持同时输出到多个目标的配置选项,你可以借助Go标准库的io.MultiWriter来实现需求,无需完全自定义Writer。
具体实现
Go标准库的io.MultiWriter能接收多个io.Writer实例,会将写入的内容同步转发给所有传入的Writer,刚好适配同时输出到文件和标准输出的场景。修改你的配置代码如下:
import ( "io" "os" "github.com/gofiber/fiber/v2/middleware/logger" ) // 假设logFile已提前完成打开初始化 app.Use(logger.New(logger.Config{ Format: "[LOG] ${time} ${status} - ${latency} ${method} ${path}\n", TimeFormat: "2006/01/2 15:04:05", Output: io.MultiWriter(logFile, os.Stdout), // 同时输出到文件与标准输出 }))
原理说明
io.MultiWriter本身实现了io.Writer接口,当Logger中间件向这个Writer写入日志时,它会把相同的日志内容依次写入到你传入的logFile和os.Stdout中,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

