Nginx日志按天分割實(shí)戰(zhàn)
前言
nginx日志文件建議按照天的維度進(jìn)行分割,方便快速按照天的維度分析以及查找報(bào)錯(cuò)定位
一、方式1:定時(shí)任務(wù)執(zhí)行分割腳本
1.分割日志腳本
創(chuàng)建一個(gè)sh文件,寫入以下內(nèi)容(個(gè)別內(nèi)容根據(jù)自己nginx的情況修改)
我這里的文件為 /usr/local/nginx/log_bak.sh
#/bin/bash
yesterday=$(date +%Y-%m-%d) #取得服務(wù)器當(dāng)前時(shí)間
savepath_log=' /var/log/nginx_bak'#分割后的日志文件保存目錄(注意結(jié)尾目錄斜杠去掉)
nglogs='/usr/local/nginx/logs' #nginx日志文件目錄,具體根據(jù)實(shí)際地址替換(結(jié)尾目錄斜杠去掉 以免與下面路徑中的"/"重復(fù))
#判斷分割日志保存目錄是否存在不存在則創(chuàng)建
if [ ! -d ${savepath_log} ] # 注意 語句之間 空格不可省略,這是bash腳本 不是php腳本那樣隨和
then
mkdir -p ${savepath_log}
fi
#通過mv命令將日志移動(dòng)到分割后的日志目錄里,然后發(fā)送kill -USR1信號(hào)給Nginx的主進(jìn)程號(hào),讓Nginx重新生成一個(gè)新的日志文件。
mv ${nglogs}/access.log ${savepath_log}/access_${yesterday}.log #具體根據(jù)你的實(shí)際日志文件名路徑 進(jìn)行修改access.log名字
mv ${nglogs}/error.log ${savepath_log}/error_${yesterday}.log #具體根據(jù)實(shí)際日志文件名地址 修改error.log名字
mv ${nglogs}/host.access.log ${savepath_log}/host.access_${yesterday}.log
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) #通知nginx重新生成新的日志2.添加定時(shí)任務(wù)
crontab -e 后添加下面內(nèi)容
59 23 * * * /usr/local/nginx/log_bak.sh(自己寫的腳本的路徑)
這樣每天的23點(diǎn)59就會(huì)將當(dāng)天的日志進(jìn)行備份,并生成新的日志文件繼續(xù)記錄訪問日志
二、方式2:logrotate配置分割
1.logrotate簡(jiǎn)單介紹
logrotate 是一個(gè) Linux系統(tǒng)日志的管理工具??梢詫?duì)單個(gè)日志文件或者某個(gè)目錄下的文件按時(shí)間 / 大小進(jìn)行切割,壓縮操作;指定日志保存數(shù)量;還可以在切割之后運(yùn)行自定義命令。
主流 Linux 發(fā)行版上都默認(rèn)安裝有 logrotate 包,如果你的 Linux 系統(tǒng)中找不到 logrotate, 可以使用 apt-get 或 yum 命令來安裝。
yum install -y logrotate
下面命令可以查看是否安裝了
rpm -ql logrotate

/etc/logrotate.conf是主配置文件,/etc/logrotate.d 文件夾下面是自定義的配置文件
2.新增切割nginx日志的配置文件
在/etc/logrotate.d目錄下新增nginx文件
vi nginx 寫入下面內(nèi)容(我的日志文件目錄是/data/wxl/nginx/logs/)
/data/wxl/nginx/logs/
/data/nginx/logs/*.log {
daily # 按天分割
rotate 30 #保留30個(gè)文件
create
sharedscripts # 所有的文件切割之后只執(zhí)行一次下面腳本,通知nginx重新打開新的日志文件進(jìn)行后續(xù)寫入
postrotate
if [ -f /data/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /data/nginx/logs/nginx.pid` # 通過USER1信號(hào)通知nginx重新打開日志文件
fi
endscript
}這樣就會(huì)每天定時(shí)分割日志了
也可以手動(dòng)執(zhí)行命令測(cè)試一下能否正常分割日志
logrotate -f /etc/logrotate.d/nginx

3.備份日志壓縮
如果分割后的日志想要壓縮進(jìn)行空間節(jié)約
可以加上下面配置
compress # 以gzip方式壓縮
nodelaycompress # 所有分割后的文件都進(jìn)行壓縮推薦將 nodelaycompress 改為 delaycompress,這樣分割后對(duì)最新的序號(hào)為1的文件不會(huì)進(jìn)行壓縮,對(duì)其他序號(hào)的文件進(jìn)行壓縮,這樣可以方便我們查看最新的分割日志。
4.分割日志后綴改為日期
如果想要分割后的日志后綴為當(dāng)天日志的日期,可以加上下面的配置
dateext # 切割后的文件添加日期作為后綴
dateyesterday # 配合dateext使用,添加前一天的日期作為分割后日志的后綴
dateformat -%Y-%m-%d # 格式為2022-02-08到此這篇關(guān)于Nginx日志按天分割實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Nginx日志按天分割內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻
Nginx?Proxy?Manager是一款功能強(qiáng)大的開源軟件,配置Web應(yīng)用防火墻,可以防止常見的web攻擊,本文就來介紹一下Nginx?Proxy?Manager配置Web?WAF應(yīng)用防火墻,感興趣的可以了解一下2025-02-02
Linux Nginx VPS下簡(jiǎn)單解決CC攻擊
Linux Nginx VPS下簡(jiǎn)單解決CC攻擊,使用Nginx與php的朋友可以參考下。2010-12-12
Nginx學(xué)習(xí)筆記之事件驅(qū)動(dòng)框架處理流程
Nginx對(duì)請(qǐng)求的處理是通過事件觸發(fā)的,模塊作為事件消費(fèi)者,只能被事件收集、分發(fā)器調(diào)用。在Nginx中,接收到一個(gè)請(qǐng)求時(shí),不會(huì)產(chǎn)生一個(gè)單獨(dú)的進(jìn)程來處理該請(qǐng)求,而是由事件收集、分發(fā)器(進(jìn)程)調(diào)用某個(gè)模塊,由模塊處理請(qǐng)求,處理完后再返回到事件收集、分發(fā)器2014-07-07
nginx實(shí)現(xiàn)指定url轉(zhuǎn)發(fā)詳解
這篇文章主要為大家詳細(xì)介紹了nginx實(shí)現(xiàn)指定url轉(zhuǎn)發(fā)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
nginx找到默認(rèn)根目錄(root?html)的方法
這篇文章主要給大家介紹了nginx如何找到默認(rèn)根目錄(root?html),文中給出詳細(xì)的解決方法,通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-11-11
Nginx?Location映射規(guī)則總結(jié)歸納與最佳實(shí)踐
Nginx的location指令是配置請(qǐng)求路由的核心機(jī)制,其匹配規(guī)則直接影響請(qǐng)求的處理流程,下面給大家介紹Nginx?Location映射規(guī)則總結(jié)歸納,感興趣的朋友一起看看吧2025-06-06
LNMP 解決Access Denied錯(cuò)誤詳細(xì)介紹
這篇文章主要介紹了LNMP 解決Access Denied錯(cuò)誤詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10

