最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ī)分割日志的評論 (共 條)

分享到微博請遵守國家法律
连江县| 青龙| 贡觉县| 化德县| 枣强县| 陵水| 璧山县| 祁东县| 阿瓦提县| 涿州市| 雷山县| 乐陵市| 泊头市| 射阳县| 即墨市| 蓬安县| 呼伦贝尔市| 阿图什市| 增城市| 扎鲁特旗| 织金县| 兰西县| 纳雍县| 桂东县| 宝坻区| 祁阳县| 宁城县| 新田县| 安陆市| 吉木萨尔县| 武清区| 南宫市| 祁门县| 东源县| 紫云| 延寿县| 孟津县| 申扎县| 景谷| 锡林浩特市| 崇仁县|