实现简单的日志写入文件功能
运行环境:
golang1.4.2+win7x64
golang1.4.2+centos6.5×64
1 package Helper 2 3 import ( 4 “fmt” 5 “log” 6 “os” 7 “time” 8 ) 9 10 /*简单日志类*/ 11 /*注意,这个类不是线程安全的*/ 12 type LogFile struct { 13 mFile *os.File 14 mLogger *log.Logger 15 } 16 17 //创建日志对象 18 func NewLogFile() *LogFile { 19 return &LogFile{mFile: nil, mLogger: nil} 20 } 21 22 //开始log,参数fileName为日志文件名 23 func (logFile *LogFile) BeginLogFile(fileName string) error { 24 strTime := time.Now().Format(“20060102_150405″) //按照这种格式进行格式化 25 26 //GetCurPath()得到当前执行文件路径,参考前一篇博文,得到类似于这样的一个文件名称RSvr_20150130_180108.log 27 logFileName := GetCurPath() + fileName + “_” + strTime + “.log” 28 mFile, err := os.OpenFile(logFileName, os.O_RDWR|os.O_CREATE, 7777) 29 30 if err != nil { 31 return err 32 } 33 34 logFile.mLogger = log.New(mFile, “\r\n”, log.Ldate|log.Ltime|log.Llongfile) 35 36 return nil 37 } 38 39 //结束log,释放资源 40 func (logFile *LogFile) EndLogFile() { 41 if logFile.mFile != nil { 42 logFile.mFile.Close() 43 } 44 } 45 46 //记录各种信息 47 //记录Fatal 48 func (logFile *LogFile) LogFatal(msg string, err error) { 49 if err != nil { 50 fmt.Printf(“Fatal: “+msg+” %v\n”, err) //显示出来 51 logFile.mLogger.Fatalf(“Fatal: “+msg+” %v\n”, err) //记录到文件里 52 } 53 } 54 55 //记录Error 56 func (logFile *LogFile) LogErr(msg string, err error) { 57 if err != nil { 58 fmt.Printf(“Err: “+msg+” %v\n”, err) //显示出来 59 logFile.mLogger.Printf(“Err: “+msg+” %v\n”, err) //记录到文件里 60 } 61 } 62 63 //记录msg 64 func (logFile *LogFile) LogMsg(msg string) { 65 fmt.Printf(“Msg: %v\n”, msg) //显示出来 66 logFile.mLogger.Printf(“Msg: %v\n”, msg) //记录到文件里 67 }
使用方法如下:
①创建一个全局变量
1 var logFile *Helper.LogFile = nil //记录文件
②创建对象并使用
1 //创建记录文件 2 logFile = Helper.NewLogFile() 3 err := logFile.BeginLogFile(“RSvr”) 4 5 //TODO err判断 6 7 //TODO 线程安全 8 9 //记录信息 10 logFile.LogMsg(“RSvr Server Running!”) 11 12 //释放 13 if logFile != nil { 14 logFile.EndLogFile() 15 }
时间: 2024-08-17 07:19:32