簡單學習了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...