【背景】
折腾:
期间,已经实现:
但是是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文件