zoukankan      html  css  js  c++  java
  • 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, “
    ”, 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 }

     

  • 相关阅读:
    [转]asp.net页面缓存技术
    UL和LI在div中的高度的IE6下兼容性
    jquery制作的横向图片滚动带横向滚动条TackerScroll
    电脑可以上网,但是qq登陆不上去?
    Introduction to discrete event system学习笔记4.6
    Introduction to Discrete event system学习笔记4.9
    Introduction to discrete event systemsstudy 4.5
    Symbolic synthesis of obserability requirements for diagnosability B.Bittner,M.Bozzano,A.Cimatti,and X.Olive笔记4.16
    Introduction to discrete event system学习笔记4.8pm
    Introduction to discrete event system学习笔记 4.8
  • 原文地址:https://www.cnblogs.com/chevin/p/5673047.html
Copyright © 2011-2022 走看看