实现简单的日志写入文件功能
运行环境:
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, “
”, 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
”, err) //显示出来
51 logFile.mLogger.Fatalf(“Fatal: “+msg+” %v
”, 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
”, err) //显示出来
59 logFile.mLogger.Printf(“Err: “+msg+” %v
”, err) //记录到文件里
60 }
61 }
62
63 //记录msg
64 func (logFile *LogFile) LogMsg(msg string) {
65 fmt.Printf(“Msg: %v
”, msg) //显示出来
66 logFile.mLogger.Printf(“Msg: %v
”, 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 }