小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Log4j相對(duì)路徑以及打印Hibernate的SQL和HQL記錄_婲間夢(mèng)居--朦朧的藍(lán)色夢(mèng)...

 iversion 2007-07-21
Log4j相對(duì)路徑以及打印Hibernate的SQL和HQL記錄
2007/07/12 21:51

今天研究了下Log4j,小有收獲,現(xiàn)在分享下經(jīng)驗(yàn)。

首先是Log4j日志記錄的相對(duì)路徑問(wèn)題,今天研究了下發(fā)現(xiàn)有個(gè)很簡(jiǎn)單的辦法實(shí)現(xiàn)相對(duì)路徑。網(wǎng)上有很多人發(fā)帖詢問(wèn)log4j日志記錄的相對(duì)路徑問(wèn)題,也有人提供了很多方法,最常見(jiàn)的三個(gè)方法是:

法一、 想辦法用相對(duì)路徑代替絕對(duì)路徑,log4j的FileAppender本身就有這樣的機(jī)制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log
其中“${WORKDIR}/”是個(gè)變量,會(huì)被System Property中的“WORKDIR”的值代替。這樣,我們就可以在log4j加載配置文件之前,先用System.setProperty("WORKDIR", WORKDIR);

法二、可以使用服務(wù)器環(huán)境變量
log4j的配置文件支持服務(wù)器的vm的環(huán)境變量,格式類(lèi)似${catalina.home}
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/logs_tomcat.log
log4j.appender.R.MaxFileSize=10KB
其中的${catalina.home}并非windows系統(tǒng)的環(huán)境變量,這個(gè)環(huán)境變量就不需要在Windows系統(tǒng)的環(huán)境變量中設(shè)置。之所以這樣,可以看看tomcat\bin\catalina.bat(startup,shutdown都是調(diào)用這個(gè))里面自帶有-Dcatalina.home="%CATALINA_HOME%" 。繼承這個(gè)思想,所以也可以自己設(shè)定一個(gè)參數(shù)-Dmylog.home="D:/abc/log"到對(duì)應(yīng)的服務(wù)器java啟動(dòng)的vm參數(shù)中

法三、通過(guò)servlet初始化init()方法中加載file屬性實(shí)現(xiàn)相對(duì)路徑,略

我的方法是直接設(shè)置相對(duì)路徑。下面是我的log4j.properties文件,這兒我同時(shí)設(shè)置了打印Hibernate的SQL和HQL記錄(既然討論的是log4j的相對(duì)路徑問(wèn)題,那么log4j的配置語(yǔ)法就不用介紹了吧?偷懶一下):

log4j.rootLogger=INFO,console,file

log4j.appender.Threshold=INFO

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.SimpleLayout

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.R.MaxFileSize=100KB

log4j.appender.file.File=../webapps/CMSERP/log.log

##注意這兒,用的是tomcat6.0。../webapps/項(xiàng)目名稱/log.log

##當(dāng)然也可以打印到WEB-INF目錄下:../webapps/項(xiàng)目名稱/WEB-INF/log.log

##還可以打印到WEB-INF的子目錄logs下:../webapps/項(xiàng)目名稱/WEB-INF/logs/log.log

##還有一點(diǎn)要說(shuō)明的是日志的名字可以自己定義,如mylog.log,mylog.txt,這兒用的是log.log

##這兒討論的是項(xiàng)目發(fā)布到tomcat的webapps目錄下,已經(jīng)很長(zhǎng)時(shí)間不用映射目錄了,而且日志

##放到開(kāi)發(fā)目錄下也沒(méi)什么意義,直接用Myeclipse的項(xiàng)目發(fā)布,方便快捷,畢竟日志是要運(yùn)行

##以后看的,調(diào)試的話可以直接看控制臺(tái)的日志信息

log4j.appender.file.Append=false

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss }[%t:%r]-[%p]%m%n
##Hibernate begin##
log4j.logger.org.hibernate=info

log4j.logger.org.hibernate.SQL=debug

log4j.logger.org.hibernate.HQL=debug

##這樣hibernate的SQL和HQL查詢都會(huì)打印到控制臺(tái)和日志文件
##Hibernate end##

另外在BaseAction中設(shè)置log4j的方法如下:

public abstract class BaseAction extends Action{

protected static Logger logger = Logger.getLogger("console");

//這樣在繼承BaseAction的action類(lèi)中可以直接調(diào)用 logger打印信息,不用重新聲明

//logger.info/debug/error/fatal("It‘s a test!");

public ActionForward execute(ActionMapping mapping,ActionForm form,   
                           HttpServletRequest request,HttpServletResponse response)   
                           throws IOException,ServletException{
             response.setHeader("Cache-Control", "no-cache");
             response.setHeader("Pragma", "no-cache");
             response.setDateHeader("Expires", 0);
             saveToken(request);
             try{
              return executeAction(mapping,form,request,response);
             }catch(Exception e){
              return mapping.findForward("UnknownException");
             }
}
             
protected abstract ActionForward executeAction(ActionMapping mapping,ActionForm form,
                HttpServletRequest request,HttpServletResponse response)
                throws Exception;   

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多