在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` 等,可以提供更丰富的功能和更灵活的配置。