程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 深刻淺析java web log4j 設置裝備擺設及在web項目中設置裝備擺設Log4j的技能

深刻淺析java web log4j 設置裝備擺設及在web項目中設置裝備擺設Log4j的技能

編輯:關於JAVA

深刻淺析java web log4j 設置裝備擺設及在web項目中設置裝備擺設Log4j的技能。本站提示廣大學習愛好者:(深刻淺析java web log4j 設置裝備擺設及在web項目中設置裝備擺設Log4j的技能)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻淺析java web log4j 設置裝備擺設及在web項目中設置裝備擺設Log4j的技能正文


在上篇文章給年夜家引見了Java log4j具體教程,本文給年夜家引見java web log4j設置裝備擺設及web項目中設置裝備擺設log4j的技能。詳細概況請看下文吧。

起首給年夜家供給log4j.jar下載:http://logging.apache.org/log4j/1.2/download.html

1、java web項目應用log4j

1.在web.xml文件中添加

<!-- 設置裝備擺設log4j --> 
 <context-param> 
 <param-name>webAppRootKey</param-name> 
 <param-value>com.hsinghsu.testSSH.webapp.root</param-value> 
 </context-param> 
 <context-param> 
 <param-name>log4jConfigLocation</param-name> 
 <param-value>/WEB-INF/classes/log4j.properties</param-value> 
 </context-param> 
 <context-param> 
 <param-name>log4jRefreshInterval</param-name> 
 <param-value>600000</param-value> 
 </context-param> 

2.添加log4j.properties文件

log4j.rootCategory=INFO, stdout , R 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
#log4j.appender.R.File=e:\\test\\avatar.log 
## linux logs file path 
#log4j.appender.R.File=${com.hsinghsu.testSSH.webapp.root}/log/testlog.log 
## Windows logs file path 
log4j.appender.R.File=D:\\eclipsespace\\testSSH\\WebContent\\WEB-INF\\testlog.log 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
#log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 
#log4j.logger.com.neusoft=DEBUG 
#log4j.logger.com.opensymphony.oscache=ERROR 
log4j.logger.net.sf.navigator=INFO 
#log4j.logger.org.apache.commons=ERROR 
#log4j.logger.org.apache.struts=WARN 
#log4j.logger.org.displaytag=ERROR 
# 
log4j.logger.org.springframework=INFO 
# 
#log4j.logger.com.ibatis.db=WARN 
#log4j.logger.org.apache.velocity=FATAL 
#log4j.logger.com.canoo.webtest=WARN 
#log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 
#log4j.logger.org.hibernate=DEBUG 
log4j.logger.org.hibernate=INFO 
#log4j.logger.org.logicalcobwebs=WARN 

3.應用log4j

例如在UserServiceImpl.java中應用log4j。

package com.hsinghsu.testSSH.service.impl; 
import org.apache.log4j.Logger; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import com.hsinghsu.testSSH.dao.UserDao; 
import com.hsinghsu.testSSH.model.User; 
import com.hsinghsu.testSSH.service.UserService; 
@Service(value = "userService") 
public class UserServiceImpl implements UserService{ 
 @Autowired 
 private UserDao userDao; 
// private final static Logger logger = Logger.getLogger(UserServiceImpl.class); 
 private Logger logger = Logger.getLogger(this.getClass().getName()); 
 public boolean login(String name, String password) 
 { 
  logger.info("--UserServiceImpl login method name:"+name+" password:"+password); 
  User user = userDao.getUserByName(name); 
  if(user!=null) 
  { 
  if(password.equals(user.getPwd())) 
  { 
   return true; 
  } 
  } 
  return false; 
 } 
} 

2、log4j.properties參數詳解

log的級別分為debug(調試信息)、info(普通信息)、warn(正告信息)、error(毛病信息)、fatal(致命毛病信息)。 
Log4j支撐兩種設置裝備擺設文件格局,一種是XML格局的文件,一種是java屬性文件log4j.properties,上面以log4j.properties為例停止解釋。  

1、設置裝備擺設根Logger 

Logger 擔任處置日記記載的年夜部門操作,其語法為:  

   log4j.rootLogger = [ level ] , appenderName1, appenderName2, …  

         level : 是日記記載的優先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或許您界說的級別。 

       appenderName:就是指定日記信息輸入目標地的稱號。  

    如:log4j.rootLogger=info,A1,B2,C3   

    在晚期log4j版本中,org.apache.Category完成了記載器的功效,後應用logger擴大了Category類,是以log4j.rootCategory也能夠應用。  

    如:log4j.rootCategory=INFO,A1,A2  

2、設置裝備擺設日記信息輸入目標地 Appender 

Appender 擔任掌握日記記載操作的輸入,其語法為:  

   log4j.appender.appenderName = fully.qualified.name.of.appender.class    

   個中"fully.qualified.name.of.appender.class" 有以下幾種: 
          i.org.apache.log4j.ConsoleAppender(掌握台)  

                該選項有以下幾種:  

                    Threshold=WARN:指定日記新聞的輸入最低條理。 
                    ImmediateFlush=true:默許值是true,意謂著一切的新聞都邑被立刻輸入。 
                    Target=System.err:默許情形下是:System.out,指定輸入掌握台 
          ii.org.apache.log4j.FileAppender(文件)  

                該選項有以下幾種:  

                    Threshold=WARN:指定日記新聞的輸入最低條理。 
                    ImmediateFlush=true:默許值是true,意謂著一切的新聞都邑被立刻輸入。 
                    File=mylog.txt:指定新聞輸入到mylog.txt文件。 
                    Append=false:默許值是true,行將新聞增長到指定文件中,false指將新聞籠罩指定的文件內容。 
          iii.org.apache.log4j.DailyRollingFileAppender(天天發生一個日記文件)  

                該選項有以下幾種:  

                    Threshold=WARN:指定日記新聞的輸入最低條理。 
                    ImmediateFlush=true:默許值是true,意謂著一切的新聞都邑被立刻輸入。 
                    File=a.log:指定新聞輸入到a.log文件,默許是從web辦事器的根途徑開端。 
                    Append=false:默許值是true,行將新聞增長到指定文件中,false指將新聞籠罩指定的文件內容。 
                    DatePattern='.'yyyy-ww:每周轉動一次文件,即每周發生一個新的文件。固然也能夠指定按月、周、天、時和分。即對應的格局以下: 
                        '.'yyyy-MM: 每個月 
                        '.'yyyy-ww: 每周  
                        '.'yyyy-MM-dd: 天天 
                        '.'yyyy-MM-dd-a: 天天兩次 
                        '.'yyyy-MM-dd-HH: 每小時 
                        '.'yyyy-MM-dd-HH-mm: 每分鐘 
          iv.org.apache.log4j.RollingFileAppender(文件年夜小達到指定尺寸的時刻發生一個新的文件,可經由過程log4j.appender.appenderName.MaxFileSize=100KB設置文件年夜小)  

               該選項有以下幾種:                      

                    Threshold=WARN:指定日記新聞的輸入最低條理。 
                    ImmediateFlush=true:默許值是true,意謂著一切的新聞都邑被立刻輸入。 
                    File=a.log:指定新聞輸入到a.log文件,默許是從web辦事器的根途徑開端。 
                    Append=false:默許值是true,行將新聞增長到指定文件中,false指將新聞籠罩指定的文件內容。 
                    MaxFileSize=100KB: 後綴可所以KB, MB 或許是 GB. 在日記文件達到該年夜小時,將會主動轉動,行將本來的內容移到mylog.log.1文件。 
                    MaxBackupIndex=2:指定可以發生的轉動文件的最年夜數。 
          v.org.apache.log4j.WriterAppender(將日記信息以流格局發送就任意指定的處所)  
                      

    例如:  

            log4j.appender.R=org.apache.log4j.DailyRollingFileAppender 
            log4j.appender.R.File=D:\\eclipsespace\\testSSH\\WebContent\\WEB-INF\\testlog.log  

3、設置裝備擺設日記信息的格局(結構)Layout 

Layout 擔任格局化Appender的輸入,其語法為: 
  log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class 
        個中"fully.qualified.name.of.layout.class" 有以下幾種: 
           i.org.apache.log4j.HTMLLayout(以HTML表格情勢結構) 
                 該選項有以下幾種: 
                      LocationInfo=true:默許值是false,輸入java文件稱號和行號 
                      Title=my app file: 默許值是 Log4J Log Messages. 
         ii.org.apache.log4j.PatternLayout(可以靈巧地指定結構形式) 
                 該選項有以下幾種: 
                      ConversionPattern=%m%n :指定如何格局化指定的新聞 
                      個中%m%n等符號所代表的寄義以下: 
                      -X號: X信息輸入時左對齊; 
                        %p: 輸入日記信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL, 
                        %d: 輸入日記時光點的日期或時光,默許格局為ISO8601,也能夠在厥後指定格局,好比:%d{yyy MMM dd HH:mm:ss,SSS},輸入相似:2002年10月18日 22:10:28,921 
                        %r: 輸入自運用啟動到輸入該log信息消耗的毫秒數 
                        %c: 輸入日記信息所屬的類目,平日就是地點類的全名 
                        %t: 輸入發生該日記事宜的線程名 
                        %l: 輸入日記事宜的產生地位,相當於%C.%M(%F:%L)的組合,包含類目名、產生的線程,和在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10) 
                        %x: 輸入和以後線程相干聯的NDC(嵌套診斷情況),特別用到像java servlets如許的多客戶多線程的運用中。 
                        %%: 輸入一個"%"字符 
                        %F: 輸入日記新聞發生時地點的文件稱號 
                        %L: 輸入代碼中的行號 
                        %m: 輸入代碼中指定的新聞,發生的日記詳細信息 
                        %n: 輸入一個回車換行符,Windows平台為"\r\n",Unix平台為"\n"輸入日記信息換行 
                        可以在%與形式字符之間加上潤飾符來掌握其最小寬度、最年夜寬度、和文本的對齊方法。如: 
                        %20c:指定輸入category的稱號,最小的寬度是20,假如category的稱號小於20的話,默許的情形下右對齊。 
                        %-20c:指定輸入category的稱號,最小的寬度是20,假如category的稱號小於20的話,"-"號指定左對齊。 
                        %.30c:指定輸入category的稱號,最年夜的寬度是30,假如category的稱號年夜於30的話,就會將右邊多出的字符截失落,但小於30的話也不會有空格。 
                        %20.30c:假如category的稱號小於20就補空格,而且右對齊,假如其稱號擅長30字符,就從右邊交遠銷出的字符截失落。 
                        如:%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n 
                            [TEST] %p [%t] %C.%M(%L) | %m%n 
         iii.org.apache.log4j.SimpleLayout(包括日記信息的級別和信息字符串) 
         iv.org.apache.log4j.TTCCLayout(包括日記發生的時光、線程、種別等等信息)  

4.其他 

log4j.logger.com. neusoft =DEBUG 
指定com.neusoft包下的一切類的品級為DEBUG。 

log4j.logger.com.opensymphony.oscache=ERROR 
log4j.logger.net.sf.navigator=ERROR 

這兩句是把這兩個包下湧現的毛病的品級設為ERROR,假如項目中沒有設置裝備擺設EHCache,則不須要這兩句。   

log4j.logger.org.apache.commons=ERROR 
log4j.logger.org.apache.struts=WARN 

這兩句是struts的包。  

log4j.logger.org.displaytag=ERROR 

這句是displaytag的包。(QC成績列表頁面所用)   

log4j.logger.org.springframework=DEBUG 
此句為Spring的包。  

log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN 
log4j.logger.org.hibernate=DEBUG 

此兩句是hibernate的包。

3、將log寫入多個文件中。

log4j設置裝備擺設:

log4j.rootCategory=INFO,stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS}[ColorClouds] %p [%t] %C.%M(%L) | %m%n 
log4j.logger.net.sf.navigator=INFO 
log4j.logger.org.springframework=INFO 
log4j.logger.runLogger= INFO,R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=G:\\log\\runLog.log 
log4j.appender.R.MaxFileSize=51200KB 
#log4j.appender.R.File=${com.huawei.icity.webapp.root}/log/icity.log 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS}[ColorClouds Run] %p [%t] %C.%M(%L) | %m%n 
#log4j.logger.businessLogger= INFO,B 
#log4j.appender.B=org.apache.log4j.RollingFileAppender 
#log4j.appender.B.File=G:\\log\\businessLog.log 
#log4j.appender.B.MaxFileSize=51200KB 
#log4j.appender.B.layout=org.apache.log4j.PatternLayout 
#log4j.appender.B.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS}[ColorClouds Business] %p [%t] %C.%M(%L) | %m%n 
log4j.logger.interfaceLogger= INFO,I 
log4j.appender.I=org.apache.log4j.RollingFileAppender 
log4j.appender.I.File=G:\\log\\interfaceLog.log 
log4j.appender.I.MaxFileSize=51200KB 
log4j.appender.I.layout=org.apache.log4j.PatternLayout 
log4j.appender.I.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS}[ColorClouds Interface] %p [%t] %C.%M(%L) | %m%n 

java挪用:

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
public class QueryMyMeetingAction extends BaseFlowAction 
{ 
 /** 
 * uid 
 */ 
 private static final long serialVersionUID = 7612831197603586815L; 
 private static Log runLog = LogFactory.getLog("runLogger");//運轉日記 
 private static Log interfaceLog = LogFactory.getLog("interfaceLogger");//接口日記 
 public String execute() throws Exception 
 { 
 interfaceLog.info("====>>要求"); 
 runLog.info("要求02" ); 
 return super.execute(); 
 } 
} 

上面給年夜家引見在Web項目中設置裝備擺設Log4j的辦法

 1. 靜態的轉變記載級別和戰略,不須要重啟Web運用,如《Effective Enterprise Java》所說。

 2. 把log文件定在 /WEB-INF/logs/ 而不須要寫相對途徑。

 3. 可以把log4j.properties和其他properties一路放在/WEB-INF/ ,而不是Class-Path。

   在web.xml 添加

    <!--假如不界說webAppRootKey參數,那末webAppRootKey就是缺省的"webapp.root"-->  

 <context-param>
 <param-name>webAppRootKey</param-name>
 <param-value>xxx.root</param-value>
 </context-param>
 <context-param>
 <param-name>log4jConfigLocation</param-name>
 <param-value>WEB-INF/log4j.properties</param-value>
 </context-param>
 <context-param>
 <param-name>log4jRefreshInterval</param-name>
 <param-value>60000</param-value>
 </context-param>
 <listener>
 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>

     在上文的設置裝備擺設裡,Log4jConfigListener會去WEB-INF/log4j.propeties 讀取設置裝備擺設文件;

     開一條watchdog線程每60秒掃描一下設置裝備擺設文件的變更;

     並把web目次的途徑壓入一個叫webapp.root的體系變量。

     然後,在log4j.properties 裡便可以如許界說logfile地位

         log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log

     假如有多個web運用,怕webapp.root變量反復,可以在context-param裡界說webAppRootKey。

以上所述就是本文關於深刻淺析java web log4j 設置裝備擺設及在web項目中設置裝備擺設Log4j的技能,願望對年夜家進修java web log4j相干常識有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved