在Linux系統中如何用logrotate實現系統日誌自動分割

2020-12-14 木易研修院

最近在用Ruby On Rails 寫一個培訓學校運營管理用的CRM客戶關係管理系統,生產環境伺服器是Nginx/Thin,開發環境用自帶的WEBrick,兩個伺服器統一有個問題就是所有的日誌都存在一個文件中,排錯時查找起來很麻煩,而且單個文件也會隨著伺服器的運行越來越大,查了查資料,實現的方法很多,以下是用logrotate實現的方法,可以實現日誌按天、周、月分割處理。

環境:

OS 版本及內核:Linux iZ28ha30kycZ 3.13.0-65-generic #106-Ubuntu SMP

Ruby 版本:2.3.0p0

Rails 版本:4.2.5

操作:

1、安裝logrotate(此作業系統版本自帶logrotate,所以這一步可以省掉)

sudo apt-get install logrotate

2、配置logrotate

vi /etc/logrotate.conf #編輯配置文件

將以下代碼添加進文件中,如果有多個需要分割的文件,添加多個就可以

#需要分割日誌目錄及文件/path/to/your/rails/current/log/*.log {daily # 按天整理 [weekly/monthly]dateext #表示檔案上rotate 的日期missingok #表示如果找不到log也沒關係rotate 65535 # 表示保留65535份compress #壓縮模式默認gzipdelaycompress #延後壓縮notifempty #如果log是空的就不rotatecopytruncate #先複製再清空[create]}

3、效果

設定好後可以等第二天,如果想當下看到效果可以執行

/usr/sbin/logrotate -f /etc/logrotate.conf

相關焦點

  • centos日誌文件/var/log詳解
    /var/log/messages — 系統啟動後的信息和錯誤日誌,是Red Hat Linux中最常用的日誌之一;它記錄了各種事件,基本上什麼應用都能往裡寫日誌,在做故障診斷時可以首先查看該文件內容。
  • Linux-系統日誌簡介
    前言日誌在排查文件的時候至關重要,在Linux上一般跟系統相關的日誌默認都會放到/var/log下面。1、/var/log/boot.log一般包含系統啟動時的日誌,包括自啟動的服務。6、/var/log/maillog包含來著系統運行電子郵件伺服器的日誌信息。7、/var/log/message包括整體系統信息,其中也包含系統啟動期間的日誌。此外,mail,cron,daemon,kern和auth等內容也記錄在var/log/messages日誌中。
  • Logreduce:用 Python 和機器學習去除日誌噪音
    當一個作業失敗時,弄清楚出了什麼問題可能是一個繁瑣的過程,它涉及到調查日誌以發現根本原因 —— 這通常只能在全部的作業輸出的一小部分中找到。為了更容易地將最相關的數據與其餘數據分開,可以使用先前成功運行的作業結果來訓練 Logreduce 機器學習模型,以從失敗的運行日誌中提取異常。此方法也可以應用於其他用例,例如,從 Journald 或其他系統級的常規日誌文件中提取異常。
  • linux作業系統常用命令及常用問題
    ●apt :APT是一個為Debian系列系統(Ubuntu,Kubuntu等等)開發的高級包管理器,在Gnu/Linux系統上,它會為包自動智能地搜索、安裝、升級以及解決依賴問題。什麼是安裝Linux所需的最小分區數量,以及如何查看系統啟動信息? 單獨一個「/」根分區足以執行所有的系統任務,但是強烈建議安裝Linux時,需要至少三個分區:/、/boot 和 swap分區。一個IDE硬碟驅動器支持高達63個分區,SCSI硬碟驅動器支持超過15個分區。
  • linux各個目錄代表什麼
    路徑:linux系統中,所有的文件與目錄都是由根目錄/開始,不是以/開頭的就是相對路徑;.:表示當前目錄,也可以用./表示;..:表示上一級目錄,也可以用..,則須看/etc/ld.so.conf文件中所記錄的信息; logrotate.d:此目錄對系統管理員來說,是十分重要的一個目錄,因為目錄中的文件,記錄了如何定期備份系統所需要備份的系統或軟體日誌文件及備份方式,目錄是由logrotate組件所提供的,而裡面所有文件是由各軟體各自產生的;其主要配置文件是/etc/logrotate.conf;
  • seci-log 1.01 發布,日誌分析軟體
    這篇文章是 seci-log 開源日誌分析軟體發布了 http://www.oschina.net/news/61996/seci-log
  • plumelog 發布 3.1.2 版本,好用的 Java 分布式日誌系統
    plumelog發布3.1.2版本本次版本更新內容:1.支持自定義自定義日誌欄位
  • 如何應用觀察者設計模式重構系統中日誌處理功能實現的程序代碼
    在示例項目銀行帳戶信息管理系統中,作者應用觀察者設計模式的主要目的是希望能夠達到分離「事件的產生者」和「事件的響應者」之間關係的設計目標——也就是將系統中的日誌記錄功能(包括異常日誌和交易日誌)從具體的業務功能實現類或者數據訪問功能的DAO組件類中分離出來。
  • 在 Linux 上用 SQL 語句查詢 Apache 日誌
    Linux 有一個顯著的特點,在正常情況下,你可以通過日誌分析系統日誌來了解你的系統中發生了什麼,或正在發生什麼。
  • Linux 日誌文件系統原來是這樣工作的
    它的原理是在進行寫操作之前,把即將進行的各個步驟(稱為transaction)事先記錄下來,保存在文件系統上單獨開闢的一塊空間上,這就是所謂的日誌(journal),也被稱為write-ahead logging,日誌保存成功之後才進行真正的寫操作、把文件系統的元數據和用戶數據寫進硬碟(稱為checkpoint),這樣萬一寫操作的過程中掉電,下次掛載文件系統之前把保存好的日誌重新執行一遍就行了
  • 性能工具之linux常見日誌統計分析命令
    - 收到請求的時間(訪問的時間與時區,比如 18/Jul/2018:17:00:01+0800,時間信息最後的 "+0800" 表示伺服器所處時區位於 UTC 之後的8小時)%{X-Real_IP}i - 客戶端的真實ip%r - 來自客戶端的請求行(請求的 URI 和 HTTP 協議,這是整個 PV 日誌記錄中最有用的信息
  • 實時海量日誌分析系統的架構設計、實現以及思考
    3 各個框架的整合3.1 ETL系統整合flumengFlume如何收集ETL系統中的日誌是我需要考慮的第一個問題。log4j2提供了專門的Appender-FlumeAppender用於將log信息發送到flume系統,並不需要我們來實現。我們在log4j2的配置文件中配置了ETL系統將log信息發送到的目的地,即avro伺服器端。
  • Linux系統logger日誌命令詳解
    -s    將消息記錄到標準錯誤以及系統日誌。-t tag    指定標記,標記記錄中的每一行。-u socket    按指定的方式寫入socket,而不是系統日誌例程。二、消息日誌級別優先級 " facility.level" 的格式例:" -p local3.info " 表示自定義local3 這個設備的消息級別為 info。消息日誌默認級別是 「user.notice」。facility:用來定義由誰產生的日誌信息,即哪個軟體、子系統運行過程中產生的日誌信息。
  • 「看這篇就夠了」推薦一個日誌服務rsyslog,讓中小型系統騰飛
    個人覺得,一個項目最重要的功能之一就是日誌系統。單臺伺服器是可以直接用框架的本地日誌,然後稍微上點規模的系統,日誌就開始有一些講究了。否則,否則就像一個庸醫,病人來了知道有病但不知道根本問題出在哪裡!其實日誌的實現也是一門小學問,想想明明是直接寫磁碟,為什麼可能在系統裡面進行多次添加呢,不會影響系統性能麼?這個問題我就不在這裡展開了,下次可以單獨拿出一個框架核心實現來分析,通過舉一反三來介紹一些知名組件的類似落盤場景實現原理!日誌實現可大可小,不過一般小項目,我們直接用框架系統自帶的就可以了。
  • 【Linux】Linux系統中的權限詳解
    所以對於了解linux系統中的各種權限及要給用戶,服務等分配合理的權限十分重要。一.文件基本權限   首先看下linux下的文件權限,可以使用ll命令或者是帶-l(長列表選項)的ls命令。  用戶每次登錄系統時,umask命令都被執行, 並自動設置掩碼mode來限制新文件的權限。用戶可以通過再次執行umask命令來改變默認值,新的權限將會把舊的覆蓋掉。我們可以執行umask命令來查看系統中文件默認權限。
  • 必須了解的mysql三大日誌-binlog、redo log和undo log
    那麼 mysql是如何保證一致性的呢?最簡單的做法是在每次事務提交的時候,將該事務涉及修改的數據頁全部刷新到磁碟中。但是這麼做會有嚴重的性能問題,主要體現在兩個方面:因為 Innodb 是以 頁 為單位進行磁碟交互的,而一個事務很可能只修改一個數據頁裡面的幾個字節,這個時候將完整的數據頁刷到磁碟的話,太浪費資源了!
  • 深度好文:Linux文件系統剖析
    由於存在這麼多類型,可以預料到 Linux 文件系統接口實現為分層的體系結構,從而將用戶接口層、文件系統實現和操作存儲設備的驅動程序分隔開。掛裝在 Linux 中將一個文件系統與一個存儲設備關聯起來的過程稱為掛裝(mount)。使用 mount 命令將一個文件系統附著到當前文件系統層次結構中(根)。
  • Windows系統安全事件日誌取證工具:LogonTracer
    一、前言最近在做著一些日誌分析的活,剛好看到LogonTracer這款工具,於是就參考著網上僅有的文章去搭建了,搭建過程中會多少遇到一些問題
  • MySQL 日誌(redo log 和 undo log) 都是什麼鬼?
    undo log一般是邏輯日誌,根據每行記錄進行記錄。1.redo log1.1 redo log和二進位日誌的區別redo log不是二進位日誌。雖然二進位日誌中也記錄了innodb表的很多操作,也能實現重做的功能,但是它們之間有很大區別。
  • c定時 linux專題及常見問題 - CSDN
    1.定時任務介紹1.1 crond是什麼crond是linux系統中用來定期執行命令或指定程序的一種服務或軟體。特殊要求:(秒級別)crond服務就無法搞定了,一般工作中寫腳本用守護進程執行[root@shellbiancheng jiaobenlianxi]# cat while1.sh #!