Tomcat原始碼解析(6)

2021-08-04 21:09:38 字數 1747 閱讀 8523

用來記錄訊息的元件。在catalina中,日誌記錄器需要與某個servlet容器相關聯。

在org.apache.catalina.logger包下,tomcat提供幾種不同型別的日誌記錄器。

與上一節的程式相比,只是******context和bootstrap類有變化。

logger介面

提供了一些log()方法來寫日誌。

接受乙個日誌級別的引數,如果引數的日誌基本的數字 比 該日誌記錄器設定的要低,才會記錄。

5個級別,fatal ,error,warning,information,debug  通過get、setverbosity()設定獲取。

通過get、setcontainer()方法,將日誌記錄器和servlet關聯起來。

filterlogger、systemerrorlogger、systemoutlogger。

他們都繼承loggerbase類,該類也實現了lifecycle介面。

public void log(string message , int verbosity)

}

systemoutlogger類,輸出到控制台。

public void log(string msg)
systemerrorlogger類,輸出錯誤資訊到控制台

public void log(string msg)
filterlogger類,將從servlet容器獲得的日誌訊息,寫到乙個檔案中。並且可以選擇是否新增時間戳。

當該類例項化的時候,建立乙個空檔案,包含日期資訊,如果變了則建立乙個新檔案(包含之前的所有日誌)。

start()與stop() 基本不做事情,stop只是關閉日誌檔案 colse()

public void log(string msg)

}} //記錄

if(writer != null)else

}}

open方法

public void open()

dir.mkdirs();

//建立指定目錄的 日誌檔案 字首+當前日期+字尾

string pathname = dir.getabsolutepath()+file.separator + prefix +date+suffix;

writer = new printwriter(new filewriter(pathname,true),true);

}

close方法 

private void close()

bootstrap類

在配置好各種容器,並set好之後。增加日誌元件。

system.setproperty("catalina.base",system.getproperty("use.dir"));

filelogger logger = new filelogger();

logger.setprefix("filelog_");

logger.setsuffix(".txt");

logger.settimestamp(true);

logger.setdirectory("webroot");

context.setlogger(logger);

Tomcat原始碼解析(16)

部署器 使用乙個web應用程式,必須表示該應用程式的context例項,部署到乙個host例項。在tomcat中,可以用war檔案的形式來部署。對於部署的每個應用程式,可以包含乙個描述檔案。包含context例項的配置資訊 deployer介面 部署器與乙個host例項相關聯,用來安裝context...

集合 SubList原始碼解析 6

sublist主要用於返回list的檢視 sublist繼承了abstractlist,abstractlist實現了list介面,所以sublist說到底就是乙個list的實現類,內部維護了乙個abstractlist物件,另外還有乙個offset和size屬性 new乙個sublist物件,並不...

TOMCAT原始碼分析 http訊息解析

之前提到tomcat的http訊息由socketprocessor處理,通過init時註冊的handler傳給http11connectionhandler process.之後呼叫http11processor process,在這個函式中完成請求的整個過程。使用chrome中請求 1.在inpu...