Linux 日誌超大問題

2021-08-31 11:10:04 字數 4141 閱讀 5888

為了能夠滿足我的乙個專案中日誌輸出的特殊要求,我花了好幾個小時配置log4j 為tomcat5.0.28 輸出日誌。本文說明了一些機制,並且描述了配置tomcat 每日生成乙個日誌檔案的步驟,涵蓋tomcat5.0.x 和5.5.x 版本。 注 : 最新的 log4j 1.3 alpha 測試版已經支援每日生成乙個日誌檔案。參考本文 相關鏈結 了解如何進行安裝和配置。

tomcat 5.0 .x 的日誌

tomcat 5.0.x 主要由兩個途徑記錄日誌資訊。分別為標準日誌輸出檔案catalina.out 和一般情況下在檔名中包含有日期的 servlet 日誌檔案(如:catalina.2004-08-27.log ) 。

the data in the servlet 的日誌資料是呼叫servletcontext 類的log() 方法產生的,例如:

httpservletrequest.getsession().getservletcontext().log(\"some message\");要儲存輸出資訊到日誌檔案,你需要在 tomcat 的配置檔案( tomcat 的 conf 目錄下) server.xml 中對 filelogger 配置,一般如下:

prefix=\"servlet.\" suffix=\".log\" timestamp=\"true\" />

servlet 日誌可以開啟(配置了 filelogger )和關閉(沒有配置 filelogger ),但是沒有辦法指定日誌輸出級別(只能輸出 info 以及更高階別的日誌資訊)。儘管 tomcat 的文件中提到它所有的 logger 都支援 verbosity 配置項,但是好像沒有什麼效果。

如果希望配置tomcat 捕獲所有的日誌資料,輸出到每日生成乙個的日誌檔案(如:在檔名中表明產生日期)。tomcat 中filelogger 提供一種標準方法用於捕獲servlet 日誌流並每天生成乙個新的檔案。你可以對日誌檔案進行備份、刪除、分析或者你希望的其它操作。

如果tomcat 再有乙個使用commons logging 介面的catalina logger 就好了,可以讓你更好的控制輸出的格式,雖然這個模組很相當容易實現的,但是誰有時間來做啊。後面會告訴大家如何控制 catalina.out 。

tomcat 5.5 .x 的日誌

tomcat 5.5.x 有兩條途徑記錄日誌資料,寫入標準輸出和標準錯誤輸出的所有內容還是記錄在檔案catalina.out ,其餘的所有日誌都通過 commons logging 介面輸出。如果你沒有配置用來其它的logger (如log4j ),所有的日誌資訊(包括通過commons-logging 輸出的所有內容)都會輸出到catalina.out ,致使其不斷增長。

tomcat 5.5.x 比tomcat 5.0.x 的一項改進是servlet 日誌不在存在了,servlet 日誌是用來接收任何傳遞給servletcontext 類的log() 方法的內容,例如:

httpservletrequest.getsession().getservletcontext().log(\"some message\");tomcat 5.5.x 現在將這些資訊通過commons-logging 介面輸出為info 級別的日誌。如果配置了像log4j 這樣的logger ,你可以把所有的日誌資訊輸入到每日生成的日誌檔案(如:在檔名中表明產生日期)中,你可以對日誌檔案進行備份、刪除、分析或者你希望的其它操作。

tomcat 通用日誌

如上所述,在catalina.out 檔案中的大部分資料都是通過呼叫commons logging 介面產生的,commons logging 可以讓你在執行期對日誌輸出細節進行控制,並允許使用多種後台日誌系統,tomcat 標準發行版使用******log 作為日誌系統,******log 將所有的內容都輸出到標準錯誤輸出,對於tomcat 來說,預設被重定向到catalina.out 檔案,這樣就造成 catalina.out 檔案不停的增長,不生成迴圈的日誌檔案。

log4j

log4j 是支援commons logging 的強大日誌系統,可以新增到你的tomcat 中替換******log 以支援迴圈的日誌檔案和多樣化的配置。事實上,你不但可以將日誌輸出到檔案,也可以輸出到作業系統日誌,或者遠端機器等其它的目標,你還可以輸出至不止乙個地方。要在你的tomcat 中使用log4j 系統可以按照如下步驟進行安裝配置(注:這是針對log4j 1.2.x 版本,1.3.x alpha 測試版本的安裝和配置可以參考附錄中的相關鏈結 ):

這裡描述的配置會導致在 tomcat 5.5.x 中建立兩個日誌檔案,在 tomat 5.0.x 中建立三個檔案:乙個是 servlet 日誌檔案(僅對 tomcat 5.0.x ),在每天晚上迴圈產生新的日誌檔案;第二個是通過 log4j 輸出的 commons logging 日誌檔案(也會在每天晚上迴圈產生新的日誌檔案),還有乙個是僅僅包含了列印到標準輸出和標準錯誤輸出的 catalina.out 檔案,這個檔案仍然會不斷的增長,但是如果你的 tomcat 應用程式設計的比較好,不是使用標準輸出和標準錯誤輸出,這就不成問題了(其實,這個檔案應該大小為 0 )。

注意,commons-logging.jar 和log4j.jar files 是安裝在tomcat 的common/lib 目錄中,而log4j.properties 檔案是安裝在common/classes 目錄中。這樣的配置可以讓tomcat 和你的web 應用程式都能夠使用log4j 。如果你的web 應用程式使用commons logging 介面,那麼其日誌資料將會輸出到tomcat 服務的日誌中。你也可以修改log4j 的配置檔案log4j.properties ,將你的應用程式日誌輸出到其它檔案中(配置方法請參考log4j 的其它文件)。

log4j 配置檔案

log4j.properties 檔案可以如下配置:

將路徑修改為你的tomcat 的logs 目錄,如果你的系統環境配置了catalina_home 環境變數,那麼可以使用$/logs/tomcat.log 進行配置即可。

上面的log4j 配置僅記錄比較重要的日誌(警告warning 、錯誤error 、致命錯誤fatal )到tomcat 的logs 目錄下的tomcat.log 檔案中,每天晚上過0 點的第一條資訊會觸發重新命名tomcat.log ,將當前日期附加在tomcat.log 檔名中,並產生新的tomcat.log 檔案。

你可以仿照配置檔案最後幾行的做法來覆蓋預設的日誌級別,來為你的應用程式做特殊配置。在正式執行環境中,你可能希望儘量減少日誌輸出,你可以修改這一行:

log4j.rootlogger=info, r

為: log4j.rootlogger=error, r

警告 在將日誌輸出級別修改為debug 時一定要小心(特別像log4j.logger.org.apache ),會造成大量的日誌,相當大程度上拖慢你的系統速度。

tomcat 啟動

請注意,你必須安裝commons-logging.jar 到tomcat 的common/lib 目錄中,你可能已經注意到,在tomcat 的已經有乙個commons-logging-api.jar 檔案了 。這個jar 檔案是commons-logging.jar 的簡版,只實現了******log 及類似的其它部分,只能基本滿足 系統啟動時的日誌輸出,因為沒有日誌系統的api ,tomcat 是不能啟動的。如果在啟動classpath 中沒有加入日誌系統(如log4j ),是不可以用commons-loging.jar 來進行 替換這個檔案的。

在啟動過程中的一些類載入時,如果你在common/lib 目錄中加入了完整版的commons-logging.jar ,它會替換commons-logging-api.jar 的類,會重新初始化日誌系統,並嘗試定位log4j 或其它你使用的日誌系統 。

應用程式日誌

你可以在你的servlet 程式中使用servlet 日誌(如servletcontext.log(\"some message\") )來記錄訊息,或者利用commons logging 介面。本節介紹在上述整合後,使用更好的日誌方法來演示日誌的加強。

例程:

import org.apache.commons.logging.log;import org.apache.commons.logging.logfactory;

private log mylog;

public void process() }

我在server.xml設定好了

可是怎麼我重啟了tomcat可是看不到它生成的日誌呢???

最佳答案 我在server.xml設定好了

解決mySQL占用記憶體超大問題

為了裝mysql環境測試,裝上後發現啟動後mysql占用了很大的虛擬記憶體,達8百多兆。網上搜尋了一下,得到高人指點my.ini。再也沒見再詳細的了.只好開啟my.ini逐行的啃,雖然英文差了點,不過多少m還是看得明的 更改後如下 innodb buffer pool size 576m 256m ...

tomcat日誌過大問題解決

一 tomcat 預設日誌檔案為 catalina.out 隨著系統執行時間的增加,該日誌檔案大小會不斷增大,甚至增大到 g級。不僅會導致我們無法使用常規工具查詢系統問題,而且會影響 tomcat 效能採用 cronlolog 工具對日誌拆分的方式處理該問題 1 cronolog cronolog ...

小問題,大問題?

有一天美國通用汽車公司的龐帝雅克 pontiac 部門收到一封客戶抱怨信,上面是這樣寫的 這是我為了同一件事第二次寫信給你,我不會怪你們為什麼沒有回信給我,因為我也覺得這樣別人會認為我瘋了,但這的確是乙個事實。我們家有乙個傳統的習慣,就是我們每天在吃完晚餐後,都會以冰淇淋來當我們的飯後甜點。由於冰淇...