關於Apache Access Logs

<< < (2/3) > >>

lss:
 :-$ 忙中有錯  :-P

謝謝阿欣幫忙更正。

lss

laifamily:
謝謝lss的網址和hlps9999的幫忙

我照著網上的步驟在DOS下做了一遍
><  好像行不通
不過  我也想了個土方法
那就是  每週由我自行人力備份  接著清除.
 :-S

My system: windows xp pro sp2 + lifetype to go 1.0.2 beta

hlps9999:
剛剛玩了一下「Creating Log Archives on Windows 2000 - Printable View」的方法,蠻好用的。

寫一下我的操作過程:
1.將上面網站所說的
引用

FOR %%V IN (%1) DO FOR /F "tokens=1-3 delims=/ " %%A IN ("%%~tV") DO copy "%%V" %%A%%B%%C%%~xV
將這一段文字,儲存成 logrotate.bat

2.將  logrotate.bat 放到 C:\LifeType ToGo!\diskw\usr\local\apache2\logs 裡

3.為了讓Windows來做「排定的工作」,再寫一個批次檔 do-logrotate.bat
引用

logrotate.bat access.log
同樣將這個 do-logrotate.bat 放在C:\LifeType ToGo!\diskw\usr\local\apache2\logs 裡

4.去Windows「控制台」/「排定的工作」,去新增一個執行「do-logrotate.bat」的工作(可以設定每天一次)

等時間到,這樣你就會有個  200X0X0X.log 的檔案了。

若是只希望保留30天內的,將 logrotate.bat改成
引用

FOR %%V IN (%1) DO FOR /F "tokens=3 delims=/ " %%A IN ("%%~tV") DO copy "%%V" %%A%%~xV

這樣就只會有 01.log~31.log

目前還在試,如何把舊的access.log清空??有幾種方式可行,慢慢嘗試中。

markwu:
mmm ... 我來想想把這一段 Script 包到 LifeType ToGo! 1.1.3 裡面。

Mark

hsiaosh:
因為我學校的社群也是架在Windows2003上,剛好有這個需要,原先是參照阿欣老師的作法,將那個批次檔,利用工作排程去做,但不會自動清空內容,檔案還是會累積越來越大,所以在網路上查詢找到了以下的資料,可以提供出來給個參考。

學校主機是採用 appserv 2.4.7版

*******************************************************************************
◆ Windows下的日誌循環

  一般在Linux下的日誌循環可以由系統的 /etc/logrotate.conf 設定,而 Apache 的日誌循環設定檔在 /etc/logrotate.d/httpd 中(以Redhat/Fedora為例),預設為一星期循環一次。有關系統日誌循環請參考相關教學文章。
  但是若您的Apache是安裝在Windows的系統中,日誌原則上(預設值)是不會循環的,所以若您一直沒有清除或手動循環log檔,一個檔案上GB大小也是有可能的,若需要去解析它可能要花很久的時間。Apache本身提供了 rotatelogs (在Windows下為 rotatelogs.exe) 這個指令來循環日誌,讓你可以手動執行指令(請參考 rotatelogs 指令教學) ,或是直接在 httpd.conf 中設定,範例如下:

每天循環(一天為86400秒)
CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log 86400" combined
檔案到達5MB就循環
CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log 5M" common
 

但這樣設定的話,它所產生的Log檔案名稱格式為 access_log.nnnn,後面的 nnnn 由系統自動產生,例如:access_log.1168300800,但這樣的話比較不容易維護或分析,您可以把它改成這樣:

每天循環(一天為86400秒)
CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log_%Y%m%d 86400" combined

如此產生出來的檔案名稱會像這樣:access_log_20070110

若您想自訂檔案名稱的日期格式,可以參考以下的設定值:

%A - full weekday name (localized)
%a - 3-character weekday name (localized)
%B - full month name (localized)
%b - 3-character month name (localized)
%c - date and time (localized)
%d - 2-digit day of month
%H - 2-digit hour (24 hour clock)
%I - 2-digit hour (12 hour clock)
%j - 3-digit day of year
%M - 2-digit minute
%m - 2-digit month
%p - am/pm of 12 hour clock (localized)
%S - 2-digit second
%U - 2-digit week of year (Sunday first day of week)
%W - 2-digit week of year (Monday first day of week)
%w - 1-digit weekday (Sunday first day of week)
%X - time (localized)
%x - date (localized)
%Y - 4-digit year
%y - 2-digit year
%Z - time zone name
%% - literal `%'

完成以上 設定後,重新啟動 Apache 即可。
*******************************************************************************

使用之前,請先把httpd.conf中,關於access.log的部分,先disable掉。
->CustomLog logs/access.log common
改成
->#CustomLog logs/access.log common
也就是加個 "#" 即可。

依據自己實際測試後,發現上面所舉的例子,對我並不適用
->CustomLog "|c:/apache2/bin/rotatelogs c:/apache2/logs/access_log 86400" combined

我是把它改成如下的方式:

TransferLog "|c:/AppServ/Apache2/bin/rotatelogs.exe c:/AppServ/Apache2/logs/%Y%m%d_access.log 86400"
ErrorLog "|c:/AppServ/Apache2/bin/rotatelogs.exe c:/AppServ/Apache2/logs/%Y%m%d_error.log 86400"

這樣之後,它會自動每天更換一個檔名,來做為記錄檔使用,也不必去清空它的內容,感覺還不錯。

導覽

[0] 文章列表

[#] 下一頁

[*] 前一頁