使用golang切割nginx日誌

2021-06-29 04:24:52 字數 1307 閱讀 4118

簡單學習了golang/go語言的基礎語法,做個定時切割nginx日誌的小指令碼練習下,感覺挺好使的~

指令碼**如下,install後將指令碼加入到crontab定時執行,當然golang也可以自己定時執行,這裡加入到crontab執行,是因為golang程序有可能會被kill掉....

package main

import (

"fmt"

"os"

"path/filepath"

"syscall"

"time"

"strings"

"os/exec"

"io/ioutil"

)func main()

} else if !finfo.isdir()

//獲取當前日期,作為此次切割日誌根目錄

t := time.now()

nowdatetime := t.format("2006-01-02")

logpath := targetdirpath+"/"+nowdatetime

os.mkdirall(logpath, 0777)

//獲取nginx的程序id

pfile,err := os.open(nginxpidpath)

defer pfile.close()

if err != nil

piddata,_ := ioutil.readall(pfile)

pid := string(piddata)

pid = strings.replace(pid,"\n","",-1)

//遍歷日誌目錄

filepath.walk(srcdirpath,func(path string, info os.fileinfo, err error) error else

//移動檔案

syscall.rename(path,targetfilepath)

//建立原檔案,這裡不需要了,因為重啟nginx後會自動生成滴

// nfile,errcreate := os.create(path)

// if errcreate != nil

// defer nfile.close()

} return nil

}) //平滑重啟nginx

cmd := exec.command("kill","-usr1",pid)

_, errcmd := cmd.output()

if errcmd != nil

fmt.println("success")

}

使用logrotate切割nginx日誌

配置 1 在 etc logrotate.d目錄下建立乙個nginx的配置檔案 nginx 配置內容如下 vim etc logrotate.d nginx usr local nginx logs log 儲存退出。2 執行logrotate usr sbin logrotate f etc lo...

nginx日誌切割

web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...

nginx 日誌切割

直接在nginx配置檔案中,配置日誌迴圈,而不需使用logrotate或配置cron任務。需要使用到 time iso8601 內嵌變數來獲取時間。time iso8601格式如下 2015 08 07t18 12 02 02 00。然後使用正規表示式來獲取所需時間的資料。使用下面的 塊 1 2 3...