基於Struts+Spring+Hibernate的Web應用框架的搭建(二)

  
1.我們已經搭建完了基本框架,接下來加入日誌功能,只需修改原來的web.xml,增加一些配置信息:
<!--通知Spring Log4j配置文件的位置 -->
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
 
<!--Spring默認刷新Log4j配置文件的間隔,單位爲millisecond-->
<context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
</context-param>
 
<!--在應用啓動時,由Spring負責加載Log4j-->
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
 
2.接下來我們定義log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG,console,file
 
## APPENDERS ##
# define an appender named console, which is set to be a ConsoleAppender
log4j.appender.console=org.apache.log4j.ConsoleAppender
 
# define an appender named file, which is set to be a RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
# replace <CATALINA_HOME> with your true path
log4j.appender.file.File=D:/eclipse/workspace/login/log.txt
 
## LAYOUTS ##
# assign a SimpleLayout to console appender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
 
# assign a PatternLayout to file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%t%p-%m%n
log4j.properties中,我們定義了日誌級別是DEBUG,日誌信息輸出目的地是控制檯(console)和文件(file)。
3.這樣我們就可以在程序代碼中進行日誌操作了:
package test.register.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
 
import test.register.entity.Register;
import test.register.service.RegisterService;
 
public class RegisterAction extends Action{
      
       private static final Logger log = LogManager.getLogger(RegisterAction.class);
      
       private RegisterService registerService;
 
       public RegisterService getRegisterService() {
              return registerService;
       }
 
       public void setRegisterService(RegisterService registerService) {
              this.registerService = registerService;
       }
 
       public ActionForward execute(ActionMapping mapping,
                                                               ActionForm form,
                                                 HttpServletRequest request,
                                    HttpServletResponse response)
       throws Exception {
              log.info("save register...");
              Register r = (Register)((DynaActionForm)form).get("register");
              getRegisterService().saveRegister(r);          
              return mapping.findForward("success");
       }    
      
}
 
4.在上面log4j.properties中,我們指定日誌輸入文件用了絕對路徑,這在很多時候不方便,爲此我們作如下修改:在web.xml中增加一個上下文參數
<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>webLogin.root</param-value>
</context-param>
 
增加系統變量,變量名爲webAppRootKey,變量值可以指定應用部署的目錄,這樣就可以在log4j.properties對日誌輸出的文件路徑作如下修改:
log4j.appender.file.File=${webLogin.root}/log.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章