【发布时间】:2023-01-11 04:43:34
【问题描述】:
我想为不同的连接使用不同的目录。假设我有在单独的线程/goroutines 中处理的连接。我希望他们写入不同的日志目录。我可以指定-log_dir,但它只会写入一个目录,所以很难理解是哪个日志文件。
有没有办法使用 glog 或其他包来做类似的事情?
【问题讨论】:
我想为不同的连接使用不同的目录。假设我有在单独的线程/goroutines 中处理的连接。我希望他们写入不同的日志目录。我可以指定-log_dir,但它只会写入一个目录,所以很难理解是哪个日志文件。
有没有办法使用 glog 或其他包来做类似的事情?
【问题讨论】:
据我所知,您可能必须创建单独的记录器实例(为每个 goroutine)将日志写入不同 goroutine 中的不同目录。 Lumberjack 在这种情况下会有所帮助。它是 Go 的日志滚动包。
// Do this for each goroutine
logger := glog.New()
// redirect logs to a different directory
logger.SetOutput(&lumberjack.Logger{
Filename: "/var/log/app/goroutine1.log",
MaxSize: 1, // megabytes
MaxBackups: 3,
MaxAge: 28, // days
})
【讨论】: