如何在Go库中实现惯用日志记录?

What is an idiomatic way to perform logging in Go?

Create a file that declares a global variable logger. Then, use the idiomatic init() function of Go to initialize the variable on startup.

logger.go:

package xxx

import (
    "log"
    "os"
)

var logger *log.Logger
func init() {
    logger = log.New(os.Stderr, "xxx: ", log.Ldate | log.Ltime | log.Lshortfile)
}

example.go:

func test() {
    logger.Println("Logged")
}

This method offers the benefit that you can use a single logger implementation that can be configured from a single file.

EDIT: ThomasKappler pointed out that if you are only using a single global logger, you can use the log package's inbuilt logger and configure it with SetFlags. The only difference is you must be more explicit and import the log package.