zoukankan      html  css  js  c++  java
  • golang写日志函数

    
    package common
    
    import (
    	"bufio"
    	"fmt"
    	"os"
    	"time"
    )
    
    
    /*自定义日志文件*/
    func DebugLog(args ...interface{}) error {
    	var floderLog = "logs"
    	logName := floderLog + "/debug_log." + time.Now().Format("2006-01-02") + ".log"
    	if _, err := os.Stat(floderLog); err != nil {
    		if !os.IsExist(err) {
    			os.MkdirAll(floderLog, os.ModePerm)
    		}
    	}
    
    	logFile, err := os.OpenFile(logName, os.O_APPEND|os.O_RDWR|os.O_CREATE, os.ModePerm)
    	if err != nil {
    		fmt.Print("打开文件失败")
    		return err
    	}
    	defer logFile.Close()
    	tm := time.Now().Format("2006-01-02 15:04:05")
    	logBody := fmt.Sprintf("%s star============================================>
    ", tm)
    	logFile.WriteString(logBody)
    	logBody = fmt.Sprintf("%+v
    ", args)
    	logFile.WriteString(logBody)
    	logBody = fmt.Sprintf("
    ")
    	logFile.WriteString(logBody)
    	return nil
    }
    
    //DebugLog2 自定义日志文件
    /*
    * dir 文件夹名字
    * fileName 文件名字
    * args 要写入的数据
     */
    func Log(dir string, fileName string, args ...interface{}) error {
    	var floderLog = "logs"
    	if fileName != "" {
    		floderLog = floderLog + "/" + dir
    	}
    	logName := floderLog + "/" + fileName + time.Now().Format("2006-01-02") + ".log"
    	if _, err := os.Stat(floderLog); err != nil {
    		if !os.IsExist(err) {
    			os.MkdirAll(floderLog, os.ModePerm)
    		}
    	}
    
    	logFile, err := os.OpenFile(logName, os.O_APPEND|os.O_RDWR|os.O_CREATE, os.ModePerm)
    	if err != nil {
    		fmt.Println("打开文件失败 err:", err)
    		return err
    	}
    	defer logFile.Close()
    	tm := time.Now().Format("2006-01-02 15:04:05")
    
    	//方法一:os包
    	// logBody := fmt.Sprintf("%s star============================================>
    ", tm)
    	// logFile.WriteString(logBody)
    	// logBody = fmt.Sprintf("%+v
    ", args)
    	// logFile.WriteString(logBody)
    	// logBody = fmt.Sprintf("
    ")
    	// logFile.WriteString(logBody)
    
    	//方法二:bufio包
    	writer := bufio.NewWriter(logFile)
    	logBody := fmt.Sprintf("%s star============================================>
    ", tm)
    	writer.WriteString(logBody) //写入缓存
    	logBody = fmt.Sprintf("%+v
    ", args)
    	writer.WriteString(logBody)
    	logBody = fmt.Sprintf("
    ")
    	writer.WriteString(logBody)
    
    	writer.Flush() //从缓存写入文件
    	return nil
    }
    
    
  • 相关阅读:
    MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结
    MFC中的Invalidate、OnDraw、OnPaint函数的作用
    MFC中和定时器使用
    SwapBuffers的等待,虚伪的FPS(转)
    OpenGl常用函数说明
    Win7_Ultimate + VS2010 + openGL_MFC单文档应用开发框架搭建步骤
    OpenGL模型视图变换、投影变换、视口变换的理解
    不同电脑的开机启动项
    第一百二十三节,JavaScript错误处理与调试
    第一百二十二节,JavaScript表单处理
  • 原文地址:https://www.cnblogs.com/haima/p/14004745.html
Copyright © 2011-2022 走看看