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 }

     

  • 相关阅读:
    sql随笔
    fastadmin 后台管理 时间戳字段使用
    查询优化随笔
    Hbuilder连接苹果手机
    composer安装Laravel
    php取上个月月初和月末时间戳
    fastadmin 后台view data-source关联报500错误问题
    京东宙斯平台使用方法(accesstoken,appkey,appsecret参数和SDK的获取)
    STM32的USB速度,终于确定了传输极限,为以后的产品设计提供了数据。
    上位机用USB做虚拟串口,总算抓到一个纯代码的总结了,没有坑的完美解决。
  • 原文地址:https://www.cnblogs.com/chevin/p/5673047.html
Copyright © 2011-2022 走看看