【发布时间】:2018-05-17 21:02:45
【问题描述】:
我无法让我的程序从 main() 之外的函数写入日志文件
我确实看到了类似的https://stackoverflow.com/a/19966217/4374801,但没有解决我的确切问题。
以下是我正在做的重要部分:
var (
Info *log.Logger
Error *log.Logger
)
func init() {
// set up log file
fileHandle, err := os.OpenFile("/var/log/checkcert", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
log.Fatal(err)
}
//defer to close when you're done with it
defer fileHandle.Close()
//set output of logs to fileHandle
log.SetOutput(fileHandle)
Info = log.New(fileHandle,
"Log: ",
log.Ldate|log.Ltime|log.Lshortfile)
Error = log.New(fileHandle,
"Error: ",
log.Ldate|log.Ltime|log.Lshortfile)
}
// The function below is called from main()
// The version here is truncated to the pertinent bit
func checkDomain(){
Info.Println("test inside checkDomain")
}
上面创建了日志文件,但没有将测试写入其中。 如果我在 init() 中放置一个测试 Println,那就可以了。
【问题讨论】:
-
文件从
init()返回时关闭。 -
啊。我应该在哪里关闭它?
标签: go