Примечание: новичок для языка голанг
Вот пример программы hello.go, которую я написал для проверки поведения, и я вижу проблему, из-за которой я не вижу ничего записываемого Logger ни в каких функциях, кроме init ().
package main
import (
"fmt"
"os"
"io"
"log"
)
var (
testLogger *log.Logger
)
func init() {
test_log := "/tmp/t1.log"
fmt.Printf("Logs are saved to %v\n", test_log)
f, err := os.OpenFile(test_log, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
fmt.Printf("ERROR Can't create log file! Reason: %v \n", err)
os.Exit(1)
}
defer f.Close()
multiWriter := io.MultiWriter(f)
testLogger = log.New(multiWriter, "", log.Ldate|log.Ltime|log.Lshortfile)
testLogger.Printf("in init..")
}
func main() {
pretest()
test()
testLogger.Printf("Back to main ... ")
}
func pretest() {
testLogger.Printf("In pretest ... ")
}
func test() {
testLogger.Printf("in test..")
}
Вот вывод и содержимое файла, в который производится запись:
➜ ./hello
Журналы сохраняются в /tmp/t1.log
➜ cat /tmp/t1.log
2018/06/28 11:23:25 hello.go: 27: в init ..
AFAIK, testLogger, совместно используемый в одном и том же пакете, должен быть доступен для каждой функции и может использоваться. Пожалуйста, поправьте меня, если мое понимание неверно? Я что-то упустил в коде? Пожалуйста, укажите какой-либо указатель или ссылку на этот вопрос? Спасибо.