Skip to content

Latest commit

 

History

History
51 lines (42 loc) · 1.85 KB

File metadata and controls

51 lines (42 loc) · 1.85 KB

在日志中打印行号

在这一节中,你将通过程序customLogLineNumber.go来学习如何在日志文件中打印输出日志的代码的行号。这个程序会分两部分展示。第一部分是这样的:

package main
import (
	"fmt"
	"log"
	"os" 
)
var LOGFILE = "/tmp/mGo.log"
func main() {
	f, err := os.OpenFile(LOGFILE, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil { 
		fmt.Println(err)
		return 
	}
	defer f.Close()

到目前为止,这个程序和前面学习的customLog.go没有什么差别。

剩下的代码如下所示:

	iLog := log.New(f, "customLogLineNumber ", log.LstdFlags)
	iLog.SetFlags(log.LstdFlags | log.Lshortfile)
	iLog.Println("Hello there!")
	iLog.Println("Another log entry!")
}

所有的神奇之处都在iLog.SetFlags(log.LstdFlags | log.Lshortfile)这一行。在这行中,除了log.LstdFlags这个选项,还多列一个选项log.Lshortfile。后一个选项在日志中增加了全部的文件名和打印日志的语句的行号。

执行 customLogLineNumber.go不会生成什么可见的输出。当然,执行两次这个程序后,日志文件/tmp/mGo.log的内容就变得像下面这样:

$ go run customLogLineNumber.go
$ cat /tmp/mGo.log
customLogLineNumber 2019/01/10 18:25:14 customLogLineNumber.go:26: Hello there!
customLogLineNumber 2019/01/10 18:25:14 customLogLineNumber.go:27: Another log entry!
$ go run customLogLineNumber.go
$ cat /tmp/mGo.log
customLogLineNumber 2019/01/10 18:25:14 customLogLineNumber.go:26: Hello there!
customLogLineNumber 2019/01/10 18:25:14 customLogLineNumber.go:27: Another log entry!
customLogLineNumber 2019/01/10 18:25:23 customLogLineNumber.go:26: Hello there!
customLogLineNumber 2019/01/10 18:25:23 customLogLineNumber.go:27: Another log entry!

你可以看到,在命令行使用长名字会是日志不易阅读。