5.5、Golang标准库-log
log包,实现了简单的日志服务
log包中有3个系列的日志打印函数
函数系列 | 作用
- | - print | 单纯的打印日志 panic | 打印日志,抛出panic异常 fatal | 打印日志,强制结束程序
os.Exit(1)
,defer
函数不会执行
Print 示例
go
package main
import (
"log"
)
func main() {
log.Print("Hello")
// 2022/10/07 15:24:38 Hello
log.Println("Hello")
// 2022/10/07 15:25:08 Hello\n
log.Printf("Hello %d", 20)
// 2022/10/07 15:25:08 Hello 20
}
Panic 示例
go
package main
import (
"fmt"
"log"
)
func main() {
defer fmt.Println("defer")
log.Panic("Hello")
fmt.Println("after Panic")
// 2022/10/07 15:27:10 Hello
// defer
// panic: Hello
}
Fatal 示例
go
package main
import (
"fmt"
"log"
)
func main() {
defer fmt.Println("defer")
log.Fatal("Hello")
fmt.Println("after Panic")
// 2022/10/07 15:28:48 Hello
// exit status 1
}
log配置
go
package main
import (
"log"
"os"
)
func init() {
// 输出格式 长日期 长时间 短文件名
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
// 设置前缀
log.SetPrefix("main: ")
// 设置日志输出文件
f, err := os.OpenFile("demo.log", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0664)
// defer f.Close()
if err != nil {
log.Fatal("日志文件打开错误")
}
log.SetOutput(f)
}
func main() {
log.Print("Hello")
// main: 2022/10/07 15:35:13 main.go:16: Hello
}
自定义logger
go
package main
import (
"log"
"os"
)
var logger *log.Logger
func init() {
// func New(out io.Writer, prefix string, flag int) *Logger
logger = log.New(os.Stdout, "main: ", log.Ldate|log.Ltime|log.Lshortfile)
}
func main() {
logger.Print("Hello")
// main: 2022/10/07 15:35:13 main.go:16: Hello
}