Logrotate實現Catalina.out日誌每倆小時切割

来源:https://www.cnblogs.com/chenzhazha/archive/2018/12/27/10185212.html
-Advertisement-
Play Games

一.Logrotate工具介紹 Logrotate是一個日誌文件管理工具,它是Linux預設自帶的一個日誌切割工具。用來把舊文件輪轉、壓縮、刪除,並且創建新的日誌文件。我們可以根據日誌文件的大小、天數等來轉儲,便於對日誌文件管理,一般都是通過cron計劃任務來完成的,讓日誌切割實現按小時分割,按天分 ...


一.Logrotate工具介紹

  Logrotate是一個日誌文件管理工具,它是Linux預設自帶的一個日誌切割工具。用來把舊文件輪轉、壓縮、刪除,並且創建新的日誌文件。我們可以根據日誌文件的大小、天數等來轉儲,便於對日誌文件管理,一般都是通過cron計劃任務來完成的,讓日誌切割實現按小時分割,按天分割等。

二.Logrotate運行機制

系統會定時運行logrotate,一般是每天一次。系統是這麼實現按天執行的。crontab會每天定時執行/etc/cron.daily目錄下的腳本,而這個目錄下有個文件叫logrotate。

[root@test01 ~]# cat /etc/cron.daily/logrotate

#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"

fi

exit 0

實際運行時,Logrotate會調用配置文件/etc/logrotate.conf

三.Logrotate的組成

/usr/sbin/logrotate         #程式所在位置;

/etc/cron.daily/logrotate    #預設讓Cron每天執行logrotate一次;

/etc/logrotate.conf         #全局配置文件;

/etc/logrotate.d/           #應用自個的配置文件存放目錄,覆蓋全局配置;

註意:logrotate.d 是一個目錄,該目錄里的所有文件都會被主動的讀入/etc/logrotate.conf中執行。另外,如果/etc/logrotate.d/裡面的文件中沒有設定一些細節,則會以/etc/logrotate.conf這個文件的設定來作為預設值。

四.Logrotate的命令格式

logrotate [OPTION...] <configfile>
-d, --debug :debug模式,測試配置文件是否有錯誤。
-f, --force :強制轉儲文件。
-m, --mail=command :壓縮日誌後,發送日誌到指定郵箱。
-s, --state=statefile :使用指定的狀態文件。
-v, --verbose :顯示轉儲過程。

例如:想強行切割日誌文件,不等logrotate切割。

[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat  #我是用來測試用的嘿嘿

註意:CentOS7 命令是在/usr/sbin/里。

 

五.常用配置參數說明

Logrotate功能的實現,最重要的就是它的配置參數

下麵介紹下它常用的配置參數:

compress

啟用壓縮,指的是輪替後的舊日誌,這裡預設用的是gzip壓縮的

daily

每天輪替

dateext

使用當期日期作為命名格式

dateformat .%s

 配合dateext使用,緊跟在下一行出現,定義文件切割後的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數

ifempty

即使日誌文件是空的也輪替

mail

將輪替後的文件發送到指定E-mail地址

copytruncate

用於還在打開中的日誌文件,把當前日誌備份並截斷,是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日誌數據。

monthly

一個月輪替一次

nocompress

如果在logrotate.conf中啟用了壓縮,這裡是做不用壓縮的參數

nomail

不發送郵件到任何地址

notifempty

如果日誌是空的就不輪替(也就是空日誌不切割)

olddir + 目錄

輪替後日誌文件放入指定的目錄,必須和當前日誌文件在同一個文件系統

rotate +次數

輪替最多保留之前的數據幾次,超出的將被刪除或郵件接收,設為0則不保存

size size

當日誌增長到指定大小的時候開始輪替

weekly

如果當前的星期幾比上次輪替的星期幾少,或者過了一個多星期,就會發生輪替通常是在每周的第一天輪替,如果logrotate不是每天運行的,會在第一次有機會時進行輪替

yearly

如果當前年份不同於上次輪替的年份,則進行日誌輪替

Missingok

如果日誌丟失,不報錯繼續滾動下一個日誌

 

六.安裝配置Logrotate

#yum安裝下

 [root@test01 ~]# yum -y install logrotate

#機器已經裝好tomcat,下麵配置切割tomcat日誌的配置文件

[root@test01 ~]# vim /etc/logrotate.d/tomcat

 

註意:logrotate的配置文件是/etc/logrotate.conf,通常不需要對它進行修改。

日誌文件的切割輪循設置在獨立的配置文件中,它們是放在/etc/logrotate.d/目錄下的。

 

[root@test01 ~]# mkdir -p /var/log/tomcat/oldlog

[root@test01 ~]# cat /etc/logrotate.d/tomcat

/usr/local/tomcat8/logs/catalina.out {  #要切割的日誌路徑,如果是多個就用空格分隔

    notifempty     #如果日誌是空的就不輪替(也就是空日誌不切割)

    rotate 5000    #輪替最多保留之前的數據5000次

    missingok      #如果日誌丟失,不報錯繼續滾動下一個日誌

    compress       #啟用壓縮,指的是輪替後的舊日誌,這裡預設用的是gzip壓縮的

    dateext        #使用當期日期作為命名格式

    dateformat .%Y%m%d-%H點    #配合dateext使用,緊跟在下一行出現,定義文件切割後的文件名,必須配合dateext使用,只支持 %Y %m %d %s

    olddir /var/log/tomcat/oldlog  #輪替後日誌文件放入指定的目錄  

}

 

註意:我這個配置里沒有設置多久切割一次,但是它也是一天切割一次,因為當/etc/logrotate.d/tomcat這個文件沒有配置時,預設是每天定時執行/etc/cron.daily/logrotate這個文件,這個文件是一天一次的。

 

#強制執行切割,查看/var/log/tomcat/oldlog下是否有日誌

[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat

reading config file /etc/logrotate.d/tomcat

olddir is now /var/log/tomcat/oldlog

Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /usr/local/tomcat8/logs/catalina.out  forced from command line (5000 rotations)

olddir is /var/log/tomcat/oldlog, empty log files are not rotated, old logs are removed

considering log /usr/local/tomcat8/logs/catalina.out

  log needs rotating

rotating log /usr/local/tomcat8/logs/catalina.out, log->rotateCount is 5000

Converted ' .%Y%m%d-%H點' -> '.%Y%m%d-%H點'

dateext suffix '.20181226-15點'

glob pattern '.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]點'

glob finding old rotated logs failed

fscreate context set to unconfined_u:object_r:usr_t:s0

renaming /usr/local/tomcat8/logs/catalina.out to /var/log/tomcat/oldlog/catalina.out.20181226-15點

compressing log with: /bin/gzip

set default create context to unconfined_u:object_r:usr_t:s0

set default create context

 

#查看切割結果

#把之前切割的刪除了,因為再定時切割文件是相同的,還是catalina.out.20181226-15點.gz這個文件,所以不會切割成功。

[root@test01 ~]# rm -rf /var/log/tomcat/oldlog/catalina.out.20181226-15點.gz 
[root@test01 ~]# ls /var/log/tomcat/oldlog/
[root@test01 ~]#

 

#設置定時任務,每一分鐘切割一次(註意:日誌里要有內容,因為前面定義空的日誌文件是不切割的)

[root@test01 ~]# crontab –e
*/1 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >>/var/log/tomcat/oldlog/cutting.log

#每倆小時切割一次

[root@test02 ~]# crontab -l
0 */2 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /root/chenjiaxin/cutting.log

#查看定時切割的結果

當然,上面設置一分鐘切割一次,是為了實驗能儘快看到效果。實際是需要根據公司需要來設置多久來切割一次日誌的!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一 Heartbeat簡介 1.1 概述 Heartbeat是Linux-HA項目中的一個組件,也是當前開源HA項目中最成功的一個例子,它提供了所有HA軟體所需要的基本功能,如心跳檢測和資源接管、監測群集中的系統服務、在群集中的節點間轉移共用IP地址的所有者等。heartbeat最核心的功能包括兩個 ...
  • firewalld 是一種動態防火牆管理解決方案。Centos 7 預設使用 firewalld。firewalld 是對 iptables 的一個封裝,可以讓你更容易地管理 iptables 規則。它並不是 iptables 的替代品,雖然 iptables 命令仍可用於 firewalld,但建... ...
  • Apache伺服器可以配置多個虛擬主機,從而為多個站點提供服務,其實質就是根據不同的策略,訪問不同的文件系統目錄。apache提供3種虛擬主機的策略,1.基於埠的虛擬主機;2.基於功能變數名稱的虛擬主機;3.基於IP的虛擬主機。 ...
  • 文件系統: 以UNIX系統V文件系統為例: 磁碟分為區,每個分區都有自己的文件系統: ​ i節點是固定長度的記錄項,包含了文件的相關信息。目錄項包含文件名和i節點號。stat結構中除文件名和i節點編號之外的數據都包含在i節點中 在進行文件索引的時候會首先找到目錄項,根據目錄項的i節點號找到i節點,i ...
  • linux預設大部分埠的是關閉的。而我們在開發、部署環境時,需要用到大量的服務,如mysql、tomcat、redis、zk等,需要開放指定的埠號。 以mysql埠3306為例 首先編輯伺服器的埠開放配置 在編輯器加入以下代碼,其中3306可以根據需要開放的埠進行替換 添加後的效果如下: ...
  • 最近搭建測試伺服器,訪問網站查看報錯日誌出現如下錯誤: Fatal error: Call to undefined function json_decode() 出現該問題原因是安裝PHP時沒有安裝json擴展所致。 1、首先進入php安裝包的ext中的json目錄,如下圖所示: 2、執行phpi ...
  • 為什麼要有進程優先順序?這似乎不用過多的解釋,畢竟自從多任務操作系統誕生以來,進程執行占用cpu的能力就是一個必須要可以人為控制的事情。因為有的進程相對重要,而有的進程則沒那麼重要。 本文作者:鄒立巍 Linux系統技術專家。目前在騰訊SNG社交網路運營部 計算資源平臺組,負責內部私有雲平臺的建設和架 ...
  • 最初的2小時,你會愛上Docker,對原理和使用流程有個最基本的理解,避免滿世界無頭蒼蠅式找資料。本人反對暴風驟雨式多管齊下狂轟濫炸的學習方式,提倡迭代學習法,就是先知道怎麼玩,有個感性認識,再深入學習高級用法,深層原理,一輪輪迭代。堅決反對一上來就搞幾百頁厚的東西把人腦子弄亂。 Docker是什麼 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...