Я хочу создать Dependency Injection для системы регистрации в golang, но когда я делаю log.Info.Println
, она ничего не печатает в файл журнала.Вот мой код:
app.go
package main
import (
log "github.com/jass-trix/BVDI/backend/application/logging"
)
func main() {
logger := log.InitLog()
logger.Info.Println("test info")
logger.Error.Println("test error")
}
init.go
package logging
import (
"flag"
"io"
"log"
"os"
)
const logPath = "log/path/"
//Logger is a struct that contain all type of logger
//logger will be separated into two level
type Logger struct {
Info *log.Logger
Error *log.Logger
}
var infoLog *log.Logger
var errorLog *log.Logger
//InitLog is a function to instantiate logging
func InitLog() *Logger {
flag.Parse()
fileInfo, err := os.OpenFile(logPath+"file.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
if err != nil {
log.Fatalf("error on opening file: %v", err)
}
defer fileInfo.Close()
multiInfo := io.MultiWriter(fileInfo, os.Stdout)
infoLog := log.New(multiInfo, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)
fileError, err := os.OpenFile(logPath+"file.error.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
if err != nil {
log.Fatalf("error on opening file: %v", err)
}
defer fileError.Close()
multiError := io.MultiWriter(fileError, os.Stdout)
errorLog := log.New(multiError, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile)
return &Logger{
Info: infoLog,
Error: errorLog,
}
}
Когда я вызываю logger.Info.Println()
в app.go, он ничего не печатает, но когда я вызываю errorLog.Println()
в init.go, он печатает в файл.
Поддерживает ли ведение журнала инъекцию зависимости?