zoukankan      html  css  js  c++  java
  • 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("第二次测试 ")
    }
    */
  • 相关阅读:
    BrowserSync,自动刷新,解放F5,去掉更新提示
    js获取手机系统语言
    块元素,行内元素,行内块区别
    原生js判断某个元素是否有指定的class名的几种方法
    如何实现调用console.log(‘good’.repeat(3))时输出goodgoodgood?
    数组如何去除重复数据,只保留一条
    Sentinel笔记-Flow流控规则
    sentinel笔记 NodeSelectorSlot,ClusterBuilderSlot
    Sentinel笔记--Slotchain
    Sentinel笔记-核心类
  • 原文地址:https://www.cnblogs.com/perfei/p/10406341.html
Copyright © 2011-2022 走看看