歡迎光臨, 訪客. 請先 登入註冊一個帳號.
十一月 25, 2024, 07:03:18 上午
19595 文章 在 3865 主題 由 4579 會員
最新註冊會員: aa123aa1
LifeType 中文開發論壇  |  支援  |  Instant LifeType 專區  |  關於Apache Access Logs « 上篇主題 下篇主題 »
頁: [1]
作者 主題: 關於Apache Access Logs  (閱讀 66579 次)
laifamily
新手見習
*
文章: 9


檢視個人資料
« 於: 三月 04, 2006, 09:28:07 下午 »

請問一下

我已經觀察到Apache Access Logs這檔案會一直的寫入新的資料
光光我ㄧ個管理員進進出出網站的    他就已經增長的蠻大了  有1MB多了
我現在都只有進去把該檔清空 
如果一個多人使用的lifetype網站   這個檔就會增長的更快
請問有沒有什麼方法    如加入一些命令列   讓它改成每日為單位記一個檔案或著周記       
或著讓它每10MB換一個檔名寫 
這樣用戶就可以把舊Access Logs的檔  移到其他的地方儲存
好方便管理     

謝謝
已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #1 於: 三月 04, 2006, 10:54:11 下午 »

你是 linux 主機嗎?介紹你看這個: 認識與分析登錄檔

初學 linux ,記得有事沒事,常去 鳥哥的私房菜 網站朝拜朝拜。

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
laifamily
新手見習
*
文章: 9


檢視個人資料
« 回覆文章 #2 於: 三月 04, 2006, 11:26:16 下午 »

Sorry 我忘了寫下我的工作環境
由於不熟析linux的語法
但看了Apache 設定檔案裡面的程式碼  遲遲未能下手
謝謝你的資訊   我會去研究研究

My system: Windows xp pro sp2 + Lifetype togo 1.0.2 beta
已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #3 於: 三月 05, 2006, 12:14:01 上午 »

在 google 蒐到這一篇: Creating Log Archives on Windows 2000 - Printable View 應該可以配合 windws 「排定的工作」 使用來遠成目的,參考看看。

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
hlps9999
LifeType 中文發展團隊
資深會員
*****
文章: 288



檢視個人資料 個人網站
« 回覆文章 #4 於: 三月 05, 2006, 12:56:17 上午 »

lss:

在 google 蒐到這一篇: Creating Log Archives on Windows 2000 - Printable View 應該可以配合 windws 「排定的工作」 使用來遠成目的,參考看看。

lss
你那連結的網址連錯了(連到了鳥哥那裡去了)
幫忙補上
http://www.netadmintools.com/part228.html
已記錄
lss
我不是被~拉~~出來的,不要叫我大大!
總版主
超級會員
*****
文章: 1511



檢視個人資料 個人網站
« 回覆文章 #5 於: 三月 05, 2006, 01:33:22 上午 »

 害羞 忙中有錯  吐舌頭

謝謝阿欣幫忙更正。

lss
已記錄

沒找過 常見問題集或不知道 如何在 LifeType 中文開發論壇發問的人,恕不回答問題
laifamily
新手見習
*
文章: 9


檢視個人資料
« 回覆文章 #6 於: 三月 05, 2006, 07:48:44 上午 »

謝謝lss的網址和hlps9999的幫忙

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

My system: windows xp pro sp2 + lifetype to go 1.0.2 beta
已記錄
hlps9999
LifeType 中文發展團隊
資深會員
*****
文章: 288



檢視個人資料 個人網站
« 回覆文章 #7 於: 三月 05, 2006, 10:12:07 上午 »

剛剛玩了一下「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
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #8 於: 一月 08, 2007, 10:30:55 上午 »

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

Mark
已記錄

hsiaosh
新手見習
*
文章: 37


檢視個人資料 個人網站
« 回覆文章 #9 於: 一月 26, 2007, 06:26:10 下午 »

因為我學校的社群也是架在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"

這樣之後,它會自動每天更換一個檔名,來做為記錄檔使用,也不必去清空它的內容,感覺還不錯。
« 最後編輯時間: 一月 26, 2007, 06:35:13 下午 由 hsiaosh » 已記錄

B2D Server 1028版+Apache:2.0.54+PHP:4.3.10+mysql:4.0.24
安裝在:/var/www/plog
lifetype v1.2.5
採用的是從阿駕那兒學來的自訂網址名稱
markwu
系統管理員
超級會員
*****
文章: 3928


Mark Wu


檢視個人資料 個人網站
« 回覆文章 #10 於: 一月 27, 2007, 10:01:38 上午 »

hsiaosh:

看起來不錯,我會結合你跟阿欣的作法把他加到 Instant LifeType 裡面。不過這只有 Apache的部分,我得來想想 Lighttpd 如何設定。

Mark
已記錄

mouson
新手見習
*
文章: 22



檢視個人資料 個人網站
« 回覆文章 #11 於: 三月 23, 2007, 01:03:26 上午 »

感謝大家的資訊
在這邊我將使用批次檔 及 rotatelogs.exe 的兩種方法都實驗過了
對上面的兩種實作基本上都是可行的
但都遇到了一些問題

由於我的環境使用Apache 的Virtual host且每一個host都有自己的log檔

首先我一開始是使用rotatelogs.exe 的方法
在Win上面實作時不知道為什麼,在Apache 啟動的時候
Apache會開啟rotatelogs.exe這一個執行檔
而且是每一個log檔一個,
假如有三個host每個host都有error log及access log
這樣子就一次會有六個rotatelogs.exe 啟動起來
上面看起來不是什麼問題

但是 不知道為什麼,當apache的服務在stop的時候,
rotatelogs.exe是不會跟著stop的
所以就會發生自己在修改apache config等等
需要一值重新啟動apache時
apache因為一堆已經啟動的rotatelogs.exe 吃掉記憶體 而無法啟動

接著第二個方法
我有在嘗試使用批次檔的方式
使用上目前都是可以的
但是這樣的作法 log檔沒有辦法每天清空
所以log檔縱使每天複製一份出去,但所複製出來的,
會還包含著從啟動開始的log紀錄

第二個方法我自己有透過修改批次檔
來達到可以同時複製所有的log檔
而且每天會清空原本的log檔

以下就分享我自己所寫出來的log檔
程式碼:

NET Stop Apache2.2
FOR %%V IN (_*.log) DO FOR /F "tokens=1-3 delims=/ " %%A IN ("%%~tV") DO copy "%%V" %%A%%B%%C%%~nV%%~xV
FOR %%V IN (_*.log) DO DEL /s /q %%V
NET Start Apache2.2

首先第一行與第四行主要的功用為停止Apache及啟動Apache服務
第二行就是在複製批次檔擺放的那個資料匣下 所有 以"_"開頭 ".log"結尾的檔案 並且複製為 年月日 檔名.log
第三行的地方是在刪除原本的批次檔

同樣的 建立了這樣的一個批次檔之後
透過Win的排程設定,就可以達到每天更新log的效用了!!

至於為什麼要停止Apache來做這件事情呢?
主要是因為所有的log檔如果在apache啟動的狀況下
會因為控制權在Apache下,而無法刪除log檔
但我又一值無法找到使Apache啟動的狀況下清空Log檔的方法
所以只好透過停止Apache的方式來達到。

這邊是我參考MS的批次檔撰寫
http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-cht/library/ServerHelp/89fdf70e-7d52-4f45-865d-6a61963a3a7e.mspx?mfr=true
已記錄

個人部落格 http://MrMo.cc/mouson
頁: [1]
LifeType 中文開發論壇  |  支援  |  Instant LifeType 專區  |  關於Apache Access Logs « 上篇主題 下篇主題 »
    前往: