在Go中,log
包是用于输出日志信息的标准库。以下是一些基本的 log
包的使用示例:
-
基本用法:
package mainimport ("log" )func main() {log.Println("This is a log message.") }
运行程序,你会在控制台看到日志信息。
-
指定日志前缀:
package mainimport ("log" )func main() {log.SetPrefix("MyApp: ")log.Println("This is a log message.") }
这会输出类似于
MyApp: This is a log message.
的日志。 -
指定日志输出位置:
package mainimport ("log""os" )func main() {logFile, err := os.Create("logfile.txt")if err != nil {log.Fatal("Cannot create log file: ", err)}defer logFile.Close()log.SetOutput(logFile)log.Println("This log message will be written to the file.") }
这会将日志写入
logfile.txt
文件中。 -
指定日志级别:
log
包默认支持Print
、Fatal
和Panic
三个级别。package mainimport ("log" )func main() {log.Print("This is a regular log message.")log.Fatal("This is a fatal log message.")log.Panic("This is a panic log message.") }
Fatal
会输出消息并调用os.Exit(1)
,Panic
会输出消息并调用panic
。 -
自定义日志记录器:
package mainimport ("log""os" )var (infoLog = log.New(os.Stdout, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile)warningLog = log.New(os.Stdout, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile) )func main() {infoLog.Println("This is an info message.")warningLog.Println("This is a warning message.") }
在这个例子中,我们创建了两个不同的日志记录器,一个用于信息级别,另一个用于警告级别。自定义日志记录器可以定制输出格式和其他属性。
6. 格式化输出:
在Go的标准库中,log
包的日志输出默认是简单的文本格式。如果你想要更精细的控制和格式化输出,你可以使用 fmt
包进行格式化,然后将格式化后的字符串传递给 log.Print
、log.Printf
、log.Println
等函数。
以下是一个使用 fmt
包格式化输出的示例:
package mainimport ("fmt""log"
)func main() {name := "John"age := 30// 使用 fmt.Sprintf 进行字符串格式化message := fmt.Sprintf("Name: %s, Age: %d", name, age)// 输出格式化后的消息log.Print(message)
}
上面的例子中,fmt.Sprintf
用于格式化字符串,然后将格式化后的字符串传递给 log.Print
。这允许你按照需要创建任意格式的日志消息。
如果你想要更多的格式化控制,你也可以使用 log.Printf
,该函数使用格式字符串和参数列表,类似于 fmt.Printf
。
package mainimport ("log"
)func main() {name := "John"age := 30// 使用 log.Printf 进行字符串格式化log.Printf("Name: %s, Age: %d", name, age)
}
这样,你可以使用类似于 fmt.Printf
的占位符进行格式化,如 %s
、%d
等。
这只是 `log` 包的基本用法示例。在实际应用中,你可能需要更复杂的日志记录、滚动日志文件等功能。有时候,使用第三方的日志库,如 `logrus`、`zap` 等,可以提供更丰富的功能和更灵活的配置。