arclog 3.00 版
Author: 依瑪貓
Keywords: 整理, Apache, Syslog, 記錄檔

繁體中文 | 简体中文 | English

:::

# `arclog` 3.00 版

## 最新消息

2007-11-28

  `arclog` 最新版本 3.00 。從 `reslog` 借過來的全新程式碼，檔名也從 `arclog.pl` 改為 `arclog` 。新的物件導向處理器，可順利處理各種壓縮法及檔案格式。安裝系統由 GNU `autoconf` 改用 Perl 的 `ExtUtils::MakeMaker` 和 `Module::Build` 。新加上完整的測試套件，協助程式品管。下載 `arclog` 3.00 版。

2002-09-26

  `arclog.pl` 最新版本 2.1.0 。這是 2.1.0 的最終版，加上了 `bzip2` 壓縮的支援，用 `gzip` 程式代替 `Compress::Zlib` 壓縮，並改用 GNU `autoconf` 安裝設定程式。下載 `arclog.pl` 2.1.0 。

2002-09-18

  `arclog.pl` 最新版本 2.1.0dev2 。本版修正了幾個說明文件的錯誤，並把 SourceForge 加進 `arclog.pl` 的下載網址中。妳可以把它當做申請 SourceForge 紀念版。原則上，不需要急著昇級。下載 `arclog.pl` 2.1.0dev2 。

2002-09-17

  好消息！ `arclog.pl` 已開始架設於 SourceForge 囉！（雖然我幾乎還完全搞不清楚要怎麼架…摸索中… ^^; ）

## 說明

`arclog` 是記錄檔每月歸檔程式，將記錄檔中，前月的記錄按月份壓縮歸檔，以節省硬碟空間，並避免記錄檔被有心人士破壞。

`arclog` 目前支援 Apache 、 Syslog 、 NTP 、 Apache 1 SSL engine log 及我自己用的括弧 ISO 修正格式五種格式的記錄檔，與 `gzip` 和 `bzip2` 兩種壓縮法。

## 注意事項

- 歸類記錄檔很耗時間。為減少佔用原記錄檔的時間， `arclog` 會先把原記錄檔複製到暫時工作檔，視需要把原記錄檔歸零，再慢慢在暫時工作檔上作業。不過仍請注意下列事項：

  1. 如果原記錄檔很大（好幾百 MB ），光複製檔案就很花時間了。這種情況下，最好先關閉記錄程式，等整理完以後，再繼續記錄，以避免記錄錯亂。若平常有定期歸檔，記錄檔就不會無限制膨脹了。

  2. 若 `arclog` 執行到一半因故中斷，會留下殘存的暫時工作檔。日後 `arclog` 執行時，碰到之前殘存的暫時工作檔，會停止執行。要先處理掉之前的暫時工作檔，才能繼續。暫時工作檔只是原檔的複本，只要改個檔名再歸檔一次，就可以了。

- 沒有特別理由，最好不要排序。排序的潛在問題如下：

  1. 記錄檔很大時，排序會吃掉很多記憶體。所需記憶體依歸檔後每個月記錄筆數而定。新版的 Linux 和 MS-Windows 系統有記憶體耗用保護，會中斷吃掉太多記憶體的程式，不過這還是要花好幾分鐘，這幾分鐘內系統會完全當掉不動。我不知道別的作業系統有沒有記憶體耗用保護。如果妳要玩，風險自負。

  2. 所有支援的記錄檔格式，時間最小單位為秒。同一秒內的記錄會先以記錄檔順序（若同時歸檔好幾個記錄檔），再以記錄本身出現的次序排序。這樣設計儘可能讓排序歸檔後同一秒內的記錄次序，和事件真正的發生順序一致，但也無法完全保證。若同一秒內的事件次序很重要，妳要自行小心。

- 歸檔 Syslog 記錄檔時，請特別注意： Syslog 記錄檔沒有記年。 `arclog` 用 `Date::Parse` 模組解讀時間。無年份時， `Date::Parse` 會把年份設在這個月到去年的下個月之間。例如，若今天是 2001-06-08 ，那年份會設在 2001-06-30 到 2000-07-01 之間。我原則上贊成這樣。不過，若妳的 Syslog 記錄檔超過一年整理歸檔，不要跑 `arclog` ，否則會死得很慘。

- 從標準輸入讀記錄檔，請注意下列事項：

  1. 若要讀標準輸入，就一定要設定歸檔時，檔名的開頭，不然不知道怎麼歸檔後要存到哪裏去。

  2. 標準輸入無法刪除、歸零或保留部份內容。若要讀標準輸入，原檔保留模式會自動退回成全部保留。一次讀入多檔時，若其中有標準輸入，會一律退回全部保留，以避免混亂。

  3. `ask` 模式的回答也是從標準輸入讀的。因為標準輸入只有一個，所以從標準輸入讀檔時，無法跑 `ask` 模式，會自動退回到 `fail` 模式。

- 我建議安裝 `File::MMagic` ，儘量不要用 `file` 程式。 `File::MMagic` 內建的檔案類型表好像比 `file` 程式準確。若不是 `gzip` 或 `bzip2` 壓縮檔， `arclog` 會把視為當成純文字檔。若壓縮檔被誤判為圖檔， `arclog` 會當成純文字檔，直接讀記錄，並以錯誤結束。就算錯誤也不會弄亂原記錄檔，不過多少有點麻煩。

## 系統需求

1. Perl 5.8.0 以上。 `arclog` 使用三參數的 `open()` 以複製檔案操作，我還不知道怎麼改寫到更早的版本上執行。若妳可以改寫到更早的版本上執行，請告訴我。妳可以輸入 `perl -v` 查詢妳目前的 Perl 版本。如果妳沒有 Perl 或需要昇級，可以到 Perl 網站下載安裝最新版 Perl 。若妳是用 MS-Windows ，可以到 ActiveState 公司下載 ActivePerl 安裝。

2. 需搭配的 Perl 模組：

   `Date::Parse`

     這是辨識記錄時間用的。若妳是 ActivePerl 使用者，可以執行 `ppm install Date::Parse` 安裝。

   若沒有上列 Perl 模組，請到 CPAN 程式庫下載安裝。

3. 選配的 Perl 模組：

   `File::MMagic`

     這是檢查檔案類型用的。若沒有安裝， `arclog` 會找 `file` 程式代替。若還找不到， `arclog` 會改用檔尾（副檔名）判斷檔案類型。這時若從標準輸入讀檔， `arclog` 就無法判斷了。若妳是 ActivePerl 使用者，可以執行 `ppm install File::MMagic` 安裝。 MS-Windows 使用者亦可由 GnuWin32 網站下載 `file.exe` 程式。請確認下載後，存檔在系統的路徑下，檔名為 `file.exe` 。

     建議用 `File::MMagic` 。 `file` 程式偶爾會誤判。

   `Compress::Zlib`

     這是處理 `gzip` 壓縮檔用的，只有在處理 `gzip` 壓縮檔才會用到。若要用時沒有安裝， `arclog` 會試著改用 `gzip` 程式代替。若還找不到， `arclog` 就無法執行。若妳是 ActivePerl 使用者，可以執行 `ppm install Compress::Zlib` 安裝。 MS-Windows 使用者亦可由 `gzip` 網站下載 `gzip.exe`。請確認下載後，存檔在系統的路徑下，檔名為 `gzip.exe` 。

   `Compress::Bzip2` 第二版以上

     這是處理 `bzip2` 壓縮檔用的，只有在處理 `bzip2` 壓縮檔才會用到。若要 用時沒有安裝， `arclog` 會試著改用 `bzip2` 程式代替。若還找不到， `arclog` 就無法執行。到我寫這一篇說明的時候為止， ActivePerl 的 PPM 模組庫裏都還沒有 `Compress::Bzip2` 。不過 MS-Windows 的使用者還是可以由 `bzip2` 網站 下載 `bzip2.exe` 。請確認下載後，存檔在系統的路徑下，檔名為 `bzip2.exe` 。

   `Term::ReadKey`

     這是顯示進度列用的，若沒有安裝，就不會顯示進度列。此外不會有任何問題。進度列可以讓妳對 `arclog` 的工作進度一目瞭然。

   若沒有上列 Perl 模組，請到 CPAN 程式庫下載安裝。

## 下載

`arclog` 的官方網站在：

- SourceForge 上的 `arclog` 網站。

- `arclog` SourceForge 專案頁。

- `arclog` CPAN 專案頁。

- 旅舍依瑪 `arclog` 網頁

最新版 `arclog` 可由下列位址下載：

- `arclog` SourceForge 下載頁。

- `arclog` CPAN 專案頁。

- 旅舍依瑪 FTP 站。

依瑪貓的 PGP 公鑰在：

- `arclog` SourceForge 網站上的依瑪貓 PGP 公鑰。

- 旅舍依瑪上的依瑪貓 PGP 公鑰。

## 安裝

若妳是由 `arclog.pl` 2.1.1dev4 以前的版本昇級，請參閱 `UPGRADE.zh-tw` 檔的昇級說明。

### 以 `ExtUtils::MakeMaker` 安裝

`arclog` 用 Perl 標準的 `ExtUtils::MakeMaker` 安裝，程序如下：

>     % perl Makefile.PL
>     % make
>     % make test
>     % make install

在 `make install` 前，請先確認妳有在安裝目錄存檔的權限。通常這時候要切換為 `root` ，才能安裝存檔。

若妳是用 MS-Windows 下的 ActivePerl ， `make` 請改用 `nmake` 。 `nmake` 可由微軟的 FTP 站下載。

若要安裝到其它地方，請設定好 `PREFIX` 。例如，一般使用者，要安裝在自己的目錄下時：

>     % perl Makefile.PL PREFIX=/home/jessica

要知道更多安裝選項的細節，請參閱 `ExtUtils::MakeMaker` 的說明（請執行 `perldoc ExtUtils::MakeMaker` ）。

### 以 `Module::Build` 安裝

若妳喜歡，也可以用 `Module::Build` 安裝，程序如下：

>     % perl Build.PL
>     % ./Build
>     % ./Build test
>     % ./Build install

在 `./Build install` 前，請先確認妳有在安裝目錄存檔的權限。通常這時候要切換為 `root` ，才能安裝存檔。

若要安裝到其它地方，請設定好 `--prefix` 。例如，一般使用者，要安裝在自己的目錄下時：

>     % perl Build.PL --prefix=/home/jessica

要知道更多安裝選項的細節，請參閱 `Module::Build` 的說明（請執行 `perldoc Module::Build` ）。

## 命令列參數

    ./arclog [參數] 記錄檔檔名… [歸檔檔名開頭]
    ./arclog [-h|-v]

記錄檔檔名

  要整理歸檔的記錄檔檔名。若要從標準輸入讀記錄檔，請設定成 `-` 。可同時指定許多檔案。支援 `gzip` 或 `bzip2` 壓縮檔。

歸檔檔名開頭

  歸檔檔名用的開頭，歸檔後的檔案會取名叫`開頭.yymmdd`，如：`開頭.200101` 、`開頭.200102` …等。如果沒有設定，會用記錄檔的檔名當開頭。若妳要從標準輸入讀記錄檔，就一定要設歸檔檔名開頭。這裏不能用 `-` （標準輸入），因為這裏設定的是檔名的開頭，不是檔名。

-c, --compress 壓縮法

  設定歸檔用的壓縮法。記錄大多都長得很像，壓縮掉會省下非常多的空間。（不然幹嘛歸檔？ ^_*’ ）目前支援下列的壓縮法：

  g, gzip

    用 `gzip` 壓縮。預設是用 `gzip` 壓縮。 `arclog` 可以用 `Compress::Zlib` 來代替 `gzip` 壓縮，不用呼叫外部程式，比較快比較安全。不過如果妳沒有裝 `Compress::Zlib` ， `arclog` 還是會自己改用 `gzip` 程式壓縮。但如果連 `gzip` 程式都沒有，卻要用到 `gzip` 壓縮，就沒有辦法了，無法執行。

  b, bzip2

    用 `bzip2` 壓縮。 `arclog` 可以用 `Compress::Bzip2` 來代替 `bzip2` 壓縮，不用呼叫外部程式，比較快比較安全。不過如果妳沒有裝 `Compress::Bzip2` ， `arclog` 還是會自己改用 `bzip2` 程式壓縮。但如果連 `bzip2` 程式都沒有，卻要用到 `bzip2` 壓縮，就沒有辦法了，無法執行。

  n, none

    不要壓縮。（妳沒搞錯吧？ :p ）

--nocompress

  歸檔後不要壓縮，效果和 `--compress none` 一樣。

-s, --sort

  按記錄時間先後（及記錄本身順序）排序。排序很耗記憶體和 CPU ，所以預設是不排序。請參見前面關於排序的注意事項。

--nosort

  不要排序（預設值）。

-o, --override 模式

  如果有同名的舊檔，該怎麼辦。目前有下列模式：

  o, overwrite

    蓋掉舊檔。舊檔的記錄會被刪掉，請多加小心。若妳的記錄檔是主記錄檔，有最完整的記錄，妳可以用 `overwrite` 。

  a, append

    和舊檔加在一起。這有可能會演變成大混亂，請多加小心。若妳想把兩份不同時間的記錄檔加在一起，妳可以用 `append` 。

  i, ignore

    略過所有該月的記錄。這有可能造成部份記錄流失，請多加小心。若妳只要補充沒有歸檔的月份，妳可以用 `ignore` 。

  f, fail

    結束程式，以免不小心破壞舊檔。若妳要用 `crontab` 之類的程式，全自動化執行，最好這樣，以免破壞資料。因此，若標準輸入不是連到鍵盤上，預設是 `fail` 。

  ask

    問妳該怎麼辦。若妳是手動執行，這樣最方便。因此，若標準輸入是連到鍵盤上，預設是 `ask` 。答案是從標準輸入讀的。因為標準輸入只有一個，若妳要從標準輸入讀記錄檔，不能跑 `ask` 模式，會自動退回 `fail` 模式。還有，如果從標準輸入讀不到東西，像 `crontab` 裏標準輸入被關掉了，也會自動退回 `fail` 模式。

-k, --keep 模式

  原記錄檔要怎麼處理。目前有下列模式：

  a, all

    完全保留原檔。

  r, restart

    歸檔後，原記錄檔歸零。

  d, delete

    歸檔後，刪除原記錄檔。

  t, this-month

    將之前月份的記錄歸檔，保留這個月的記錄，留待下個月歸檔。這是給 `crontab` 每月歸檔用的。因此，預設是 `this-month` 。

-d, --debug

  顯示詳細的執行過程。

-q, --quiet

  沒事不要吵。 :p

-h, --help

  顯示程式說明。

-v, --version

  顯示程式版本。

## 版權聲明

版權所有 © 2001-2007 依瑪貓。

本程式是自由軟體，您可以遵照自由軟體基金會 (Free Software Foundation) 出版的 GNU 通用公共許可證條款 (GNU General Public License) 第三版來修改和重新發佈這一程式，或者自由選擇使用任何更新的版本。

發佈這一程式的目的是希望它有用，但沒有任何擔保。甚至沒有適合特定目的而隱含的擔保。更詳細的情況請參閱 GNU 通用公共許可證。

您應該已經和程式一起收到一份 GNU 通用公共許可證的副本。如果還沒有，參閱`<http://www.gnu.org/licenses/>`。

## 版本紀錄

請閱讀 `Changes` 檔，查看程式的演變、新增的功能和修補的錯誤。

## 支援協助

`arclog` 網站架在 SourceForge 、 CPAN 與 旅舍依瑪。索取最新資訊，請駕臨：

- SourceForge 上的 `arclog` 網站。

- `arclog` SourceForge 專案頁。

- `arclog` CPAN 專案頁。

- 旅舍依瑪 `arclog` 網頁。

在 SourceForge 上有一個 `arclog` 的郵件通訊 。使用上的問題、建議或錯誤回報，請提到通訊上討論。它是 Mailman 的郵件通訊。若要加入，請到 `arclog` 郵件通訊的網頁 。妳也可以寫信到 E-mail 指令信箱，標題填上 `help` ，索取 E-mail 指令說明。