• GO 日志追加记录


    以追加的方式将程序输出到不同的日志文件,当日志文件超过10M大小时,自动清空文件。

    package tools
    
    import (
        "fmt"
        "log"
        "os"
    )
    
    const logDir string = "/usr/local/dbmng/log/"
    
    func PathExists(path string) bool {
        _, err := os.Stat(path)
        if err == nil {
            return true
        }
        if os.IsNotExist(err) {
            return false
        }
        return false
    }
    
    func CreateDir(dir string) {
        if !PathExists(dir) {
            err := os.Mkdir(dir, os.ModePerm)
            if err != nil {
                fmt.Printf("mkdir failed![%v]
    ", err)
            }
        }
    }
    //日志分类,不同用途的日志记录于不同的文件
    func LogInfo(msg string) {
        fileName := "/usr/local/dbmng/log/info.log"
        //logFile,err  := os.Create(fileName)
        LogClearFile(fileName)
        logFile, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
        defer logFile.Close()
    
        if err != nil {
            log.Fatalln("open file error")
        }
        debugLog := log.New(logFile, "[Info]", log.LstdFlags)
        debugLog.Println(msg)
    }
    
    func LogInfoDbVip(msg string) {
        fileName := "/usr/local/dbmng/log/info_dbvip.log"
        LogClearFile(fileName)
        logFile, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
        defer logFile.Close()
    
        if err != nil {
            log.Fatalln("open file error")
        }
    
        debugLog := log.New(logFile, "[Info]", log.LstdFlags)
        debugLog.Println(msg)
    }
    
    // 日志大于10M 时清空一次,目录不存在时会自动创建,没有测试父级目录不存在会不会创建
    func LogClearFile(fileName string) {
        CreateDir(logDir)
        if PathExists(fileName) {
            fileInfo, _ := os.Stat(fileName)
            //文件大小
            filesize := fileInfo.Size()
            if filesize > 12328960 { // 大于10M时清空一次
                os.Create(fileName)
            }
        }
    }
    
    func LogWarning(msg string) {
        fileName := "/usr/local/dbmng/log/warning.log"
        LogClearFile(fileName)
        logFile, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
        defer logFile.Close()
    
        if err != nil {
            log.Fatalln("open file error")
        }
        debugLog := log.New(logFile, "[Warning]", log.LstdFlags)
        debugLog.Println(msg)
    }
    
    func showUsing() {
        fileName := "Info_First.log"
        logFile, err := os.Create(fileName)
        defer logFile.Close()
        if err != nil {
            log.Fatalln("open file error")
        }
        debugLog := log.New(logFile, "[Info]", log.Llongfile)
        debugLog.Println("A Info message here")
        debugLog.SetPrefix("[Debug]")
        debugLog.Println("A Debug Message here ")
    }
    
    /*
    func main(){
        LogInfo("普通测试")
        LogInfoDbVip("第一次测试 ")
        LogWarning("第二次测试 ")
    }
    */
  • 相关阅读:
    Ajax校验
    Struts2国际化
    OGNL
    Struts2基础数据校验和框架校验
    http
    AES,BigInteger,MD5加密
    随笔 js-----------------------------------------------------------------------------------------------------
    13年总结js,css,java xml
    window、linux安装jdk,excel 导入oracle,WebService,window 端口查看,svn服务安装,oracle用户解锁
    经典sql语句
  • 原文地址:https://www.cnblogs.com/perfei/p/10406341.html
Copyright © 2020-2023  润新知