Golang log标准库
时间:2025-1-13 20:55 作者:杨佳乐 分类: Golang
package main
import (
"log"
"os"
)
// log 标准库是一个简单而强大的日志工具,用于记录程序运行过程中的信息。它支持日志输出到控制台、文件等,还可以自定义格式和行为
func main(){
// 基本用法
log.Println("This is a log message")
log.Printf("This is a formatted log: %d", 42)
// log.Fatal("这将记录消息并退出程序") //打印日志后调用 os.Exit(1) 退出程序
// log.Panic("这将记录消息并报异常") //打印日志后调用 panic
// 默认行为
// 默认输出到标准错误(os.Stderr)
// 默认日志格式:时间戳 + 日志内容
// 默认包含日期和时间
// 设置日志前缀
// 使用 log.SetPrefix 添加前缀
log.SetPrefix("[INFO] ")
log.Println("This is an informational message")
// [INFO] 2025/01/13 20:46:02 This is an informational message
// 设置日志标志
// 使用 log.SetFlags 控制日志的时间格式和内容
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)
log.Println("This is a detailed log message")
// [INFO] 2025/01/13 20:47:17.910174 8-pkg-log.go:35: This is a detailed log message
// 常用标志:
// log.Ldate: 日期(2025/01/12)。
// log.Ltime: 时间(12:34:56)。
// log.Lmicroseconds: 微秒级时间戳。
// log.Llongfile: 绝对路径和文件名。
// log.Lshortfile: 短文件名和行号。
// log.LUTC: 使用 UTC 时间。
// 日志输出到文件
file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("Failed to open log file: %s", err)
}
defer file.Close()
log.SetOutput(file)
log.Println("This log will be written to the file")
// 使用自定义 Writer
// var buffer bytes.Buffer
// log.SetOutput(&buffer)
// log.Println("This log is written to a buffer")
// log.Println("Another log message")
// // 打印缓冲区内容
// println(buffer.String())
// 创建自定义日志器
file2, _ := os.OpenFile("app2.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
defer file2.Close()
logger := log.New(file2, "[CUSTOM] ", log.Ldate|log.Ltime|log.Lshortfile)
logger.Println("This is a custom log message")
// 记录错误
// err := errors.New("an example error")
// log.Printf("Error occurred: %v", err)
}
标签: Golang标准库