Простой демонстрационный код работает так, как он объединяет конфигурацию Logrus и логику main
следующим образом
func main() {
var filename string = "logfile.log"
f, err := os.OpenFile(filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
Formatter := new(log.TextFormatter)
Formatter.TimestampFormat = "02-01-2006 15:04:05"
Formatter.FullTimestamp = true
log.SetFormatter(Formatter)
if err != nil {
fmt.Println(err)
} else {
log.SetOutput(f)
}
log.Info("Some info. Earth is not flat")
log.Warning("This is a warning")
log.Error("Not fatal. An error. Won't stop execution")
}
Но в реальном мире, конфигурация logrus должна быть разделена на отдельный файл, рассмотримструктура файла как:
logrusdemo/
├── main.go
└── mylib
├── aa.go
└── bb.go
И я хочу поделиться этой же конфигурацией в этих файлах:
Исходный код aa.go
:
package mylib
// GetTestA testing
func GetTestA() string {
//log.info("entering aa.go")
return "001"
}
Исходный код bb.go
:
package mylib
// GetTestB testing
func GetTestB() string {
//log.info("entering bb.go")
return "001"
}
Исходный код main.go
:
package main
import (
"fmt"
"logrusdemo/mylib"
)
func main() {
//log.info("entering main")
fmt.Printf("%v", mylib.GetTestA())
fmt.Printf("%v", mylib.GetTestB())
}
Мне было интересно, как заставить logrus работать в этой ситуации?