Go语言 常用日志记录方法
Go目前标准包中日志只是方便的实现日志记录的功能,这些日志都是基于fmt包的打印再结合panic之类的函数来进行一般的打印、抛出错误处理。 一个简单的日志记录代码例子: 代码来自:http://www.du52.com/text.php?id=114 package main import( "fmt" "log" "os" ) func main(){ logfile,err:=os.OpenFile("/Users/cybercare/tmp/test.log",os.O_RDWR|os.O_CREATE,0666) if err!=nil{ fmt.Printf("%srn",err.Error()) os.Exit(-1) } defer logfile.Close() logger:=log.New(logfile,"rn",log.Ldate|log.Ltime|log.Llongfile) logger.Println("hello") logger.Println("oh....") logger.Fatal("test") logger.Fatal("test2") } 在log文件中显示的是: 2013/03/16 17:28:18 /Users/cybercare/go/src/test1/main.go:18: hello 2013/03/16 17:28:18 /Users/cybercare/go/src/test1/main.go:19: oh.... 2013/03/16 17:28:18 /Users/cybercare/go/src/test1/main.go:20: test 日志当然也可以不记录在文件中,默认是不记录在文件中的: 下面是一个例子:linux下通过go语言获得系统进程cpu使用情况,这段代码通过linux的系统命令 ps来分析cpu的使用情况 代码出处:http://www.sharejs.com/codes/go/5662 package main import( "bytes" "log" "os/exec" "strconv" "strings" ) type Process struct{ pid int cpu float64 } func main(){ cmd:=exec.Command("ps","aux") var out bytes.Buffer cmd.Stdout=&out err:=cmd.Run() if err!=nil{ log.Fatal(err) } processes:=make([]*Process,0) for{ line,err:=out.ReadString('n') if err!=nil{ break } tokens:=strings.Split(line,"") ft:=make([]string,0) for _,t:=range tokens{ if t!=""&&t!="t"{ ft=append(ft,t) } } log.Println(len(ft),ft) pid,err:=strconv.Atoi(ft[1]) if err!=nil{ continue } cpu,err:=strconv.ParseFloat(ft[2],64) if err!=nil{ log.Fatal(err) } processes=append(processes,&Process{pid,cpu}) } for _,p:=range processes{ log.Println("Process",p.pid,"takes",p.cpu,"%oftheCPU") } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |