My project has some packages, I don't want to pass log instance from one function to another, instead use a global log instance in there packages.
Here is the demo I have done, but run go run main.go, nothing print in logs/replica.log.
What's wrong with my code?
├── log
│ └── replica.log
├── logs
│ └── logs.go
├── main.go
$ cat main.go
package main
import (
"./logs"
)
func main() {
logs.Debug("hello")
}
$ cat logs/logs.go
package logs
import (
logging "github.com/op/go-logging"
"os"
)
var log = logging.MustGetLogger("replica")
var format = logging.MustStringFormatter(
`%{time:2006-01-02 15:04:05} [%{level:.4s}] %{shortfile}: %{message}`,
)
func init() {
f, err := os.OpenFile("log/replica.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
panic(err)
}
defer f.Close()
backend1 := logging.NewLogBackend(f, "", 0)
backend1Formatter := logging.NewBackendFormatter(backend1, format)
logging.SetBackend(backend1Formatter)
}
func Debug(args ...interface{}) {
log.Debug(args)
}