国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

nginx不停機(jī)分割日志

2022-08-14 18:48 作者:張方興  | 我要投稿

nginx不停機(jī)分割日志

本篇文章記錄一下Nginx未停機(jī)下更新日志的過程。

?

Nginx輸出的日志原名為access.log,但是如果時(shí)間長了該日志文件會變得過于龐大,需要使用EmEditor之類的大TXT打開文件才能夠進(jìn)行打開。

?

EMEditor免費(fèi)版雖然功能較少,但是可以免費(fèi)打開及查看大TXT日志文件,其中13G的TXT文件大概需要5秒左右即可打開。

?

nginx共有幾種分割日志的方式。通常主要分為:

1.?linux任務(wù)調(diào)度進(jìn)行更改日志文件名稱,讓每天新的日志仍然傳輸?shù)絘ccess.log之中,到每天半夜將當(dāng)天的access.log文件更改為access-2022-08-14之類的日志名稱,再讓當(dāng)天最新的日志文件輸出到access.log之中。

2.?server中配置map方式

3.?server中配置getTime方式

等等方式通過Nginx的配置文件nginx.conf文件,更改獲取時(shí)間的方式并且疊加到access.log之中即可。

?

下文中將會采用方式三server中配置getTime方式進(jìn)行配置nginx分割日志。

?

不停機(jī)的方式即是通過Nginx自帶的命令進(jìn)行刷新配置文件如下所示,更改完配置文件輸入如下命令即可。

nginx?-t??//查看當(dāng)前配置文件是否正確,如果錯(cuò)誤則需要修改配置文件。

nginx -s reload //刷新配置文件,并且以新的配置文件進(jìn)行運(yùn)行Nginx

nginx?-s?reopen?//重新將數(shù)據(jù)導(dǎo)入到新的日志文件之中。

?

簡單釋義的情況下用上述三條命令即可達(dá)到,更改完配置文件直接進(jìn)行熱部署的效果。但是值得注意的是,Nginx含有worker進(jìn)程,即使更改完配置文件,并且對Nginx進(jìn)行刷新,通過新的配置文件進(jìn)行配置時(shí),如果仍然還有進(jìn)程在訪問Nginx的話,那么因?yàn)閣orker進(jìn)程沒有進(jìn)行刪除,所以新的日志無法正確產(chǎn)生,這種情況下只能強(qiáng)行關(guān)閉nginx進(jìn)行重啟。筆者仍沒有嘗試過大約多久所有的worker會失效,畢竟有些線上項(xiàng)目24小時(shí)都有人進(jìn)行訪問,所以估計(jì)很難進(jìn)行熱部署,不過好在nginx重啟時(shí)間只需要毫秒即可啟動,如果這種熱配置的方式不行的話,只能通過keepalived配置多個(gè)nginx,產(chǎn)生灰度的效應(yīng),停機(jī)其中一個(gè)nginx之后,另外一個(gè)nginx仍然可以運(yùn)行。不過這個(gè)不在本文說明范圍之內(nèi)。

?

順便記錄下nginx停機(jī)及啟動命令。

nginx?-s stop //nginx停機(jī)

start nginx //windows環(huán)境下后臺啟動nginx

./nginx & //linux環(huán)境下后臺啟動nginx

?

nginx分割日志配置

在nginx的server下配置以下代碼

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")

{

????set $year $1;

????set $month $2;

????set $day $3;

????set $hour $4;

????set $minutes $5;

????set $seconds $6;

}

?

效果如下圖所示。


?

這里給nginx多設(shè)置了幾個(gè)變量。然后在access.log處增加代碼如下所示。

access_log??logs/access_$year-$month-$day-$hour-$minutes-$seconds.log??main;

?

效果如下圖所示。


?

這里是按照每秒分割一個(gè)新的日志,如果需要更改的話只要后面不要增加小時(shí)、分鐘。秒即可。

值得注意的是,以后輸出文件會直接輸出到access_2022-8-14.log之中,立即生效,不會像任務(wù)調(diào)度的方式是等待第二天才生效的。

?

另外再access_log?這行代碼配置的最后含有main定義,該定義對應(yīng)上方的log_format定義,該定義為輸出到access_log都數(shù)據(jù)格式,通常會進(jìn)行詳細(xì)編寫,方便后續(xù)擴(kuò)展由logstash進(jìn)行對日志的解析。nginx本身含有一份默認(rèn)的log_format類型。但是通常這里都根據(jù)業(yè)務(wù)自行編寫的。

?

在上述兩者配置之后,使用nginx刷新配置、nginx重新打開日志文件命令,即可達(dá)到不停機(jī)分割日志的方式。最終效果如下圖所示。

我這里是按照秒進(jìn)行分割的日志。


nginx不停機(jī)分割日志的評論 (共 條)

分享到微博請遵守國家法律
科技| 黔东| 民勤县| 台安县| 昌宁县| 蒙山县| 濮阳县| 通化市| 湾仔区| 巴塘县| 横峰县| 阿鲁科尔沁旗| 临城县| 镇远县| 鄱阳县| 隆昌县| 定边县| 三亚市| 临汾市| 年辖:市辖区| 呈贡县| 台南市| 祁阳县| 葫芦岛市| 清涧县| 虎林市| 垫江县| 崇礼县| 郯城县| 西畴县| 土默特右旗| 南投县| 泗洪县| 年辖:市辖区| 夏河县| 集安市| 融水| 大丰市| 库伦旗| 平顶山市| 石渠县|