Golang简单日志类

实现简单的日志写入文件功能
运行环境:
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 }

 

posted @ 2016-07-15 11:38  pcwen.top  阅读(708)  评论(0编辑  收藏  举报
pcwen.top