天天看點

日志輪替工具logrotate歸納總結

1 理論部分

1.1 logrotate的作用

logrotate通俗點講主要實作日志分割功能,關于詳細功能如下:

- 定義日志的轉存規則(根據時間或大小轉存,轉存幾份以及舊日志删除)

- 定義轉存同時壓縮日志

- 定義日志的郵寄備份

- 定義日志的轉存權限

- 定義空日志的轉存方式

1.2 logrotate的啟動

1

<code>cat</code> <code>/etc/cron</code><code>.daily</code><code>/logrotate</code>

詳細如下:

2

3

4

5

6

7

8

<code>#!/bin/sh</code>

<code>/usr/sbin/logrotate</code> <code>/etc/logrotate</code><code>.conf</code>

<code>EXITVALUE=$?</code>

<code>if</code> <code>[ $EXITVALUE != 0 ]; </code><code>then</code>

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

<code>fi</code>

<code>exit</code> <code>0</code>

注:以上可見logrotate是基于crontab觸發執行(按天)

1.3 logrotate的配置檔案

<code>cat</code> <code>/etc/logrotate</code><code>.conf</code>

9

10

11

12

13

14

15

16

17

<code>weekly</code>

<code>rotate 4</code>

<code>create</code>

<code>dateext</code>

<code>include </code><code>/etc/logrotate</code><code>.d</code>

<code>/var/log/wtmp</code> <code>{</code>

<code>    </code><code>monthly</code>

<code>    </code><code>create 0664 root utmp</code>

<code>        </code><code>minsize 1M</code>

<code>    </code><code>rotate 1</code>

<code>}</code>

<code>/var/log/btmp</code> <code>{</code>

<code>    </code><code>missingok</code>

<code>    </code><code>create 0600 root utmp</code>

注:留意include參數,故可在“/etc/logrotate.d”目錄配置子配置檔案

1.4 logrotate的配置檔案的常用參數

1.4.1 時間參數

yearly - 按年轉存日志

monthly - 按月轉存日志

weekly - 按周轉存日志

daily - 按日轉存日志

1.4.2 日志保留的份數

rotate - 轉存保留多少份日志

範例:

<code>rotate 5</code>

1.4.3 日志的壓縮

compress - 轉存的日志使用gzip壓縮

delaycompress- 不壓縮最近一次的日志

1.4.4 錯誤處理

missingok - 轉存時忽略任何錯誤

1.4.5 空日志處理

notifempty - 不轉存空日志

1.4.6 權限處理

create - 指定轉存日志權限

<code>create 644 root root</code>

1.4.7 腳本調用

prerotate/endscript - 指定日志轉存前調用腳本

postrotate/endscript - 指定日志轉存後調用腳本

<code>postrotate</code>

<code>/usr/bin/killall</code> <code>-HUP rsyslogd</code>

<code>endscript</code>

1.4.7 其他參數

請參閱:

<a href="http://www.linuxcommand.org/man_pages/logrotate8.html" target="_blank">http://www.linuxcommand.org/man_pages/logrotate8.html</a>

2 實踐部分

2.1 軟體包的安裝

<code>yum </code><code>install</code> <code>-y logrotate</code>

2.2 定位日志配置檔案

<code>ls</code> <code>-l </code><code>/var/log/wtmp</code>

詳細顯示如下:

<code>-rw-rw-r--. 1 root utmp 46464 Feb  9 08:48 </code><code>/var/log/wtmp</code>

2.3 編輯配置檔案

<code>vim </code><code>/etc/logrotate</code><code>.d</code><code>/wtmp</code>

配置如下:

<code>    </code><code>yearly</code>

<code>    </code><code>rotate 5</code>

<code>    </code><code>compress</code>

<code>    </code><code>delaycompress</code>

<code>    </code><code>notifempty</code>

<code>    </code><code>create 644 root utmp</code>

注:沒有就建立,配置檔案名稱與日志檔案名稱一緻(友善管理)

2.4 測試配置檔案

<code>logrotate -d </code><code>/etc/logrotate</code><code>.d</code><code>/wtmp</code>

2.5 手動運作配置檔案(可選)

<code>logrotate </code><code>/etc/logrotate</code><code>.conf</code>

<code>logrotate </code><code>/etc/logrotate</code><code>.d</code><code>/wtmp</code>

==========================================================

本文轉自 tanzhenchao 51CTO部落格,原文連結:http://blog.51cto.com/cmdschool/1896025,如需轉載請自行聯系原作者