用來記錄訊息的元件。在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...