• 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("第二次测试 ")
    }
    */
  • 相关阅读:
    LeetCode5654. 盒子中小球的最大数量
    LeetCode40. 组合总和 II
    LeetCode39. 组合总和
    LeetCode17. 电话号码的字母组合
    Leetcode216. 组合总和 III
    eclipse相关使用
    matlab符号的含义
    matlab矩阵相关的笔记
    vi编辑器
    Linux 环境变量
  • 原文地址:https://www.cnblogs.com/perfei/p/10406341.html
Copyright © 2020-2023  润新知