Logrotate如何實(shí)現(xiàn)每小時(shí)切割日志文件
一、Logrotate背景介紹
logrotate 程序是一個(gè)日志文件管理工具。
用來(lái)把舊的日志文件刪除,并創(chuàng)建新的日志文件,我們把它叫做“轉(zhuǎn)儲(chǔ)”。
我們可以根據(jù)日志文件的大小,也可以根據(jù)其天數(shù)來(lái)轉(zhuǎn)儲(chǔ),這個(gè)過(guò)程一般通過(guò)crontab 定時(shí)任務(wù)。
1.1 安裝
一般在服務(wù)器初始化的時(shí)候這些工具都已經(jīng)存在的,但是為了保險(xiǎn),還是手動(dòng)安裝一下:
yum -y install logrotate
服務(wù)簡(jiǎn)單的說(shuō)明:
服務(wù)的主配置文件:/etc/logrotate.conf

在主配置中可以看到 include /etc/logrotate.d 說(shuō)明我們可以將用戶定義的配置直接放到這下面,系統(tǒng)會(huì)自動(dòng)為我們執(zhí)行。
當(dāng)然,系統(tǒng)的并不能很好的滿足我們需求。
二、logrotate配置介紹
再看看配置模板:
日志文件絕對(duì)路徑 {
各種參數(shù)...
}參數(shù)包含:
| 參數(shù) | 說(shuō)明 |
|---|---|
| daily | 每天輪替一次 |
| weekly | 每周輪替一次 |
| monthly | 每月輪替一次 |
| yearly | 每年輪替一次 |
| rotate | 保留幾個(gè)輪替日志文件 |
| ifempty | 日志沒(méi)有內(nèi)容的時(shí)候也進(jìn)行輪替 |
| notifempty | 若日志為空,則不進(jìn)行輪替 |
| create | 舊日志文件輪替后創(chuàng)建新的日志文件 |
| size | 日志達(dá)到多少后進(jìn)行rotate |
| minsize | 文件容量一定要超過(guò)多少后才進(jìn)行rotate |
| nocompress | 輪替但不進(jìn)行壓縮 |
| compress | 壓縮輪替文件 |
| dateext | 輪替舊日志文件時(shí),文件名添加-%Y %m %d形式日期,可用dateformat選項(xiàng)擴(kuò)展配置。 |
| dateformat .%s | 對(duì)日期進(jìn)行格式定制 |
| nodateext | 舊日志文件不使用dateext擴(kuò)展名,后面序數(shù)自增如"*.log.1" |
| sharedscripts | 作用域下文件存在至少有一個(gè)滿足輪替條件的時(shí)候,執(zhí)行一次prerotate腳本和postrotate腳本。 |
| prerotate/endscript | 在輪替之前執(zhí)行之間的命令,prerotate與endscript成對(duì)出現(xiàn)。 |
| postrotate/endscript | 在輪替之后執(zhí)行之間的命令,postrotate與endscript成對(duì)出現(xiàn)。 |
| olddir | 將輪替的文件移至指定目錄下 |
| missingok | 如果日志文件不存在,繼續(xù)進(jìn)行下一個(gè)操作,不報(bào)錯(cuò) |
三、實(shí)現(xiàn)每小時(shí)切割日志文件
3.1、添加 logrotate 配置文件
vim /etc/logrotate.d/nginx
內(nèi)容如下:
/data2/data/cp*log/cp.log
{
copytruncate
rotate 87600
missingok
ifempty
dateext
dateformat -%Y%m%d-%H
sharedscripts
postrotate
if [ -f /usr/local/openresty/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid`
fi
endscript
}3.2 執(zhí)行命令
?//手動(dòng)執(zhí)行一次輪替: ?/usr/sbin/logrotate -vf /etc/logrotate.d/nginx
執(zhí)行命令
logrotate [-dv] [-f|--force] [-s|--state statefile] config_file ..
執(zhí)行命令選項(xiàng)
# logrotate --help Usage: logrotate [OPTION...] <configfile> -d, --debug Don't do anything, just test (implies -v) 不做實(shí)際處理,僅調(diào)試 -f, --force Force file rotation 強(qiáng)制執(zhí)行,忽視參數(shù)要求 -m, --mail=command Command to send mail (instead of `/bin/mail') 發(fā)送mail -s, --state=statefile Path of state file 查看狀態(tài)文件 -v, --verbose Display messages during rotation 輪替一次,并顯示輪替過(guò)程信息 --version Display version information 顯示logrotate版本 Help options: -?, --help Show this help message --usage Display brief usage message
3.3加入定時(shí)任務(wù)
crontab -e
每小時(shí)的59分進(jìn)行切割 內(nèi)容如下:
# Logrotate 59 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx
這里只簡(jiǎn)單地介紹該種定時(shí)任務(wù)配置。
#格式 *(分鐘) *(小時(shí)) *(天) *(月) *(周幾) 用戶 命令 # 若分鐘位值為 *,表示0-59之間的任意有效值; # 若分鐘位值為 1,表示每小時(shí)的第1分鐘; # 若分鐘位值為 */5,表示每5分鐘 # 若分鐘位值為10,20 表示每小時(shí)的第10分鐘和第20分鐘 # 若分鐘位值為10-12 表示每小時(shí)的第10、11、12分鐘
效果如下:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx之正向代理與反向代理進(jìn)階方式(支持https)
文章介紹了如何在Nginx中實(shí)現(xiàn)正向代理和反向代理對(duì)HTTP和HTTPS協(xié)議的支持,通過(guò)使用第三方模塊`ngx_http_proxy_connect_module`和Nginx內(nèi)置的`ngx_http_ssl_module`,可以實(shí)現(xiàn)Nginx對(duì)HTTPS的正向和反向代理2025-03-03
Nginx多ip部署多站點(diǎn)的實(shí)現(xiàn)步驟
使用Nginx在具有多個(gè)IP地址的服務(wù)器上部署多個(gè)站點(diǎn),從而實(shí)現(xiàn)高效、安全的網(wǎng)站托管,本文主要介紹了Nginx多ip部署多站點(diǎn)的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-01-01
Nginx轉(zhuǎn)發(fā)丟失cookie表現(xiàn)形式及解決方案
本文主要介紹了Nginx轉(zhuǎn)發(fā)丟失cookie表現(xiàn)形式及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
nginx 讓users有權(quán)限啟動(dòng)的兩種方法
這篇文章主要介紹了nginx 讓users有權(quán)限啟動(dòng)兩種方法的相關(guān)資料,需要的朋友可以參考下2017-05-05
詳解Nginx proxy_pass的一個(gè)/斜杠引發(fā)的血案
這篇文章主要介紹了詳解Nginx proxy_pass的一個(gè)/斜杠引發(fā)的血案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

