在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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("%s\r\n",err.Error()) os.Exit(-1) }
defer logfile.Close() logger:=log.New(logfile,"\r\n",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") }
}
读写文件的操作例子可以解决: golang 读写文件
|
请发表评论