私はいくつかのエラー情報をファイルに記録しているかなりシンプルなコードをいくつか持っています。グローバル変数のときにネイティブGolangロガーがログに記録されないのはなぜですか?
package main
import (
"log"
"os"
)
var testLogger *log.Logger
func init() {
logFile, openErr1 := os.OpenFile("/home/doug/logs/test.log", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)
if openErr1 != nil {
log.Println("Uh oh! Could not open log file.")
}
defer logFile.Close()
testLogger = log.New(logFile, "PREFIX", log.Lshortfile|log.Ldate|log.Ltime)
}
func main() {
testLogger.Println("meep meep")
}
ただし、プログラムを実行した後にファイルを開くときは、常に空です。私は間違って何をしていますか?
'defer logFile.Close()'はinit関数の最後に実行されませんか?あなたがロガーの下からファイルを閉じようとしているのではないのですか? –
@ChrisTavares GAH。ですから、私は 'main()'でそれを実行する必要がありますか? –
@DougSmithは、遅延をメインに置いて残りを残すことはできません。すべてのログ設定をメインワークの先頭に移動するなど、ここに示唆されているようにhttps://stackoverflow.com/questions/32619318/logging-to-a-file-in-golang – Snowman