目錄
- 一、Logrotate背景介紹
- 1.1 安裝
- 二、logrotate配置介紹
- 三、實現(xiàn)每小時切割日志文件
- 3.1、添加 logrotate 配置文件
- 3.2 執(zhí)行命令
- 3.3加入定時任務
- 總結
一、Logrotate背景介紹
logrotate 程序是一個日志文件管理工具。
用來把舊的日志文件刪除,并創(chuàng)建新的日志文件,我們把它叫做“轉儲”。
我們可以根據(jù)日志文件的大小,也可以根據(jù)其天數(shù)來轉儲,這個過程一般通過crontab 定時任務。
1.1 安裝
一般在服務器初始化的時候這些工具都已經存在的,但是為了保險,還是手動安裝一下:
yum -y install logrotate
服務簡單的說明:
服務的主配置文件:/etc/logrotate.conf
在主配置中可以看到 include /etc/logrotate.d 說明我們可以將用戶定義的配置直接放到這下面,系統(tǒng)會自動為我們執(zhí)行。
當然,系統(tǒng)的并不能很好的滿足我們需求。
二、logrotate配置介紹
再看看配置模板:
日志文件絕對路徑 { 各種參數(shù)... }
參數(shù)包含:
參數(shù) | 說明 |
---|---|
daily | 每天輪替一次 |
weekly | 每周輪替一次 |
monthly | 每月輪替一次 |
yearly | 每年輪替一次 |
rotate | 保留幾個輪替日志文件 |
ifempty | 日志沒有內容的時候也進行輪替 |
notifempty | 若日志為空,則不進行輪替 |
create | 舊日志文件輪替后創(chuàng)建新的日志文件 |
size | 日志達到多少后進行rotate |
minsize | 文件容量一定要超過多少后才進行rotate |
nocompress | 輪替但不進行壓縮 |
compress | 壓縮輪替文件 |
dateext | 輪替舊日志文件時,文件名添加-%Y %m %d形式日期,可用dateformat選項擴展配置。 |
dateformat .%s | 對日期進行格式定制 |
nodateext | 舊日志文件不使用dateext擴展名,后面序數(shù)自增如"*.log.1" |
sharedscripts | 作用域下文件存在至少有一個滿足輪替條件的時候,執(zhí)行一次prerotate腳本和postrotate腳本。 |
prerotate/endscript | 在輪替之前執(zhí)行之間的命令,prerotate與endscript成對出現(xiàn)。 |
postrotate/endscript | 在輪替之后執(zhí)行之間的命令,postrotate與endscript成對出現(xiàn)。 |
olddir | 將輪替的文件移至指定目錄下 |
missingok | 如果日志文件不存在,繼續(xù)進行下一個操作,不報錯 |
三、實現(xiàn)每小時切割日志文件
3.1、添加 logrotate 配置文件
vim /etc/logrotate.d/nginx
內容如下:
/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í)行命令
?//手動執(zhí)行一次輪替: ?/usr/sbin/logrotate -vf /etc/logrotate.d/nginx
執(zhí)行命令
logrotate [-dv] [-f|--force] [-s|--state statefile] config_file ..
執(zhí)行命令選項
# logrotate --help Usage: logrotate [OPTION...] <configfile> -d, --debug Don't do anything, just test (implies -v) 不做實際處理,僅調試 -f, --force Force file rotation 強制執(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 輪替一次,并顯示輪替過程信息 --version Display version information 顯示logrotate版本 Help options: -?, --help Show this help message --usage Display brief usage message
3.3加入定時任務
crontab -e
每小時的59分進行切割 內容如下:
# Logrotate 59 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx
這里只簡單地介紹該種定時任務配置。
#格式 *(分鐘) *(小時) *(天) *(月) *(周幾) 用戶 命令 # 若分鐘位值為 *,表示0-59之間的任意有效值; # 若分鐘位值為 1,表示每小時的第1分鐘; # 若分鐘位值為 */5,表示每5分鐘 # 若分鐘位值為10,20 表示每小時的第10分鐘和第20分鐘 # 若分鐘位值為10-12 表示每小時的第10、11、12分鐘
效果如下:
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。