【背景】
折腾:
期间,已经实现:
但是是print到cmd中的。
现在想要输出内容到log文件中。
【折腾过程】
1.参考官网:
去加上:
1 | import "log" |
2.参考:
去试试。
3.对于输出的log文件,想要实现以当前文件名为名,即:
当前是
EmulateLoginBaidu.go
希望log文件是:
EmulateLoginBaidu.log
所以要去:
4.已经解决了,获得当前文件名的问题,接下来,是希望把相关的代码,单独弄成对应的独立的函数里面去:
【记录】go语言中把代码移至独立的函数中:搞懂go语言中函数的写法
5.然后再继续去,使用log,生成log文件,输出内容到log文件:
先再去看看 os.OpenFile 的语法:
然后再去看看对应的:
然后去试试代码,结果出错:
【已解决】go语言编译出错:syntax error: unexpected :, expecting := or = or comma
6.然后又出现“exit status 1”的错误:
【总结】
最终,成功实现了log输出文件,到对应的log文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package main import ( "fmt" "log" "os" //"io/ioutil" //"net/http" "runtime" "path" "strings" ) // GetCurFilename // Get current file name, without suffix func GetCurFilename() string { _, fulleFilename, _, _ := runtime.Caller( 0 ) //fmt.Println(fulleFilename) var filenameWithSuffix string filenameWithSuffix = path.Base(fulleFilename) //fmt.Println("filenameWithSuffix=", filenameWithSuffix) var fileSuffix string fileSuffix = path.Ext(filenameWithSuffix) //fmt.Println("fileSuffix=", fileSuffix) var filenameOnly string filenameOnly = strings.TrimSuffix(filenameWithSuffix, fileSuffix) //fmt.Println("filenameOnly=", filenameOnly) return filenameOnly } func main() { fmt.Printf( "this is EmulateLoginBaidu.go\n" ) var filenameOnly string filenameOnly = GetCurFilename() fmt.Println( "filenameOnly=" , filenameOnly) var logFilename string = filenameOnly + ".log" ; fmt.Println( "logFilename=" , logFilename) logFile, err := os.OpenFile(logFilename, os.O_RDWR | os.O_CREATE, 0777 ) if err != nil { fmt.Printf( "open file error=%s\r\n" , err.Error()) os.Exit(- 1 ) } defer logFile.Close() //logger:=log.New(logFile,"\r\n", log.Ldate | log.Ltime | log.Llongfile) logger:=log.New(logFile, "\r\n" , log.Ldate | log.Ltime | log.Lshortfile) logger.Println( "normal log 1" ) logger.Println( "normal log 2" ) } |
输出的内容,如下:
1 2 3 4 | D:\tmp\tmp_dev_root\go\src\github.com\user\EmulateLoginBaidu>go run EmulateLoginBaidu.go this is EmulateLoginBaidu.go filenameOnly= EmulateLoginBaidu logFilename= EmulateLoginBaidu.log |
如图:
对应log文件:
D:\tmp\tmp_dev_root\go\src\github.com\user\EmulateLoginBaidu\EmulateLoginBaidu.log |
的内容为:
1 2 3 | 2013/09/18 17:18:18 EmulateLoginBaidu.go:71: normal log 1 2013/09/18 17:18:18 EmulateLoginBaidu.go:72: normal log 2 |
至此,基本搞定。
注意:
不要轻易用Fatal或Panic:
转载请注明:在路上 » 【已解决】go语言中实现输出日志内容到log文件