【背景】
折腾:
期间,已经实现:
但是是print到cmd中的。
现在想要输出内容到log文件中。
【折腾过程】
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文件:
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") }
输出的内容,如下:
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 |
的内容为:
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文件