多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
~~~ func main() { log.Println("这是一条很普通的日志。") v := "很普通的" log.Printf("这是一条%s日志。\n", v) log.Fatalln("这是一条会触发fatal的日志。") log.Panicln("这是一条会触发panic的日志。") } ~~~ ## 配置logger ~~~go func Flags() int func SetFlags(flag int) ~~~ `log`库中使用`SetFlags`方法来设置日志的输出格式 ~~~ func main() { log.SetFlags(log.Ldate | log.Ltime) // 日期 和 时间 log.Println("这是一条很普通的日志") } // 输出: 2022/06/08 11:13:42 这是一条很普通的日志 ~~~ ~~~go const ( // 控制输出日志信息的细节,不能控制输出的顺序和格式。 // 输出的日志在每一项后会有一个冒号分隔:例如2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message Ldate = 1 << iota // 日期:2009/01/23 Ltime // 时间:01:23:23 Lmicroseconds // 微秒级别的时间:01:23:23.123123(用于增强Ltime位) Llongfile // 文件全路径名+行号: /a/b/c/d.go:23 Lshortfile // 文件名+行号:d.go:23(会覆盖掉Llongfile) LUTC // 使用UTC时间 LstdFlags = Ldate | Ltime // 标准logger的初始值 ) ~~~ ## 配置日志前缀 ~~~go func Prefix() string func SetPrefix(prefix string) ~~~ ~~~ // 配置日志的前缀 func main() { log.SetFlags(log.LstdFlags) log.Println("这是一条普通的日志") log.SetPrefix("[INFO]\t") log.Println("这是一条普通的日志") } ~~~ ## 配置日志输出位置 ~~~go func SetOutput(w io.Writer) ~~~ ~~~ // 配置日志输出位置 func main() { logFile, err := os.OpenFile("./test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if err != nil { fmt.Println("open log file failed: err: ", err) return } log.SetOutput(logFile) log.SetFlags(log.LstdFlags) log.Println("这是一条普通的日志") log.SetPrefix("[INFO]\t") log.Println("这是一条普通的日志") } ~~~ ## 创建logger ~~~go func New(out io.Writer, prefix string, flag int) *Logger ~~~ ~~~ // 创建logger func main() { logger := log.New(os.Stdout, "<INFO>\t", log.LstdFlags) logger.Println("这是自定义的logger记录的日志") } ~~~